-1
我是一名初學C++程序員。某處有一個簡單的錯誤,但我無法弄清楚它爲什麼不能編譯。Hello World的簡單修改
Main.cpp的:
#include <iostream>
#include <string>
#include "GUI.h"
#include "GUI.cpp"
int main()
{
Display("Hello World!");
return 0;
}
GUI.h
#pragma once
void Display(std::string param0);
GUI.cpp
#include "GUI.h"
void Display(std::string param0)
{
std::cout << param0;
}
錯誤是:
Namespace "std" has no member "string" and "cout"
'String' is not a member of 'std'
'String' undeclared identifier
syntax error: missing ')' before identifier 'param0'
'{': missing function header (old-style formal list?)
然而,當我直接將代碼粘貼到Main.cpp的創建
#include <iostream>
#include <string>
void Display(std::string param0);
void Display(std::string param0)
{
std::cout << param0;
}
int main()
{
Display("Hello World!");
return 0;
}
它工作正常,所以問題可能在於不正確使用的#includes的。
我一直認爲include指令只是「注入」main.cpp代碼,它只是爲了組織目的和將代碼分成小塊,但現在我很困惑。
這段代碼應該是這樣的,爲什麼?
這段代碼中是否有任何不良的編程習慣?
編輯:感謝您的幫助,終於編譯,所以我認爲它應該做的那樣:
Main.cpp的
#include <iostream>
#include <string>
#include "GUI.h"
int main()
{
Display("Hello World!");
return 0;
}
GUI.h
#pragma once
#include <iostream>
#include <string>
void Display(std::string param0);
也可以是完成爲
#ifndef GUI_H
#define GUI_H
#include <iostream>
#include <string>
void Display(std::string param0);
#endif
GUI.cpp
#include "GUI.h"
void Display(std::string param0)
{
std::cout << param0;
}
您在GUI.h中缺少#include –
請勿包含源文件(.cpp)。 –
[無法重現](http://melpon.org/wandbox/permlink/8wa1G3TpUVC0xEda)。 –