使用命令行g ++编译问题

时间:2011-08-21 05:24:43

标签: c++ g++ compilation

我正在尝试创建一个编译特定程序的Makefile。

我有1x .cpp文件和2x .h文件。

所以我会去

g++ source.cpp header1.h header2.h -o programOut

事情是我收到了错误。

主要在第二个头文件中,其中Appointments是第一个头文件中定义的类。 第二个头文件主要包含(函数原型?)我刚刚使用了其他函数,删除了实现并将其放在那里。

error: ‘Appointments’ does not name a type
error: ISO C++ forbids declaration of ‘left’ with no type
error: ‘Appointments’ does not name a type
error: ISO C++ forbids declaration of ‘right’ with no type
error: ‘string’ does not name a type
error: ‘time_t’ does not name a type

如果我去g ++ source.cpp -o programOut,它编译得很好 但是当我输入g +时我添加了.h文件,它给出了上面显示的错误。 有什么想法吗?

3 个答案:

答案 0 :(得分:2)

通常,您不应在要编译的文件列表中包含头文件。相反,您的源文件(如source.cpp)已经#include他们需要的标头。如果你的标题中实际上有非原型代码需要编译成自己的.o文件,那你就错了。

答案 1 :(得分:2)

g++期望在命令行上传递的文件是编译单元。头文件不是编译单元,因此不应该首先在命令行上传递。

答案 2 :(得分:0)

g ++ -Wall -Werror source.cpp

但您必须位于代码所在的同一目录中。