我正在尝试创建一个编译特定程序的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文件,它给出了上面显示的错误。 有什么想法吗?
答案 0 :(得分:2)
通常,您不应在要编译的文件列表中包含头文件。相反,您的源文件(如source.cpp)已经#include
他们需要的标头。如果你的标题中实际上有非原型代码需要编译成自己的.o文件,那你就错了。
答案 1 :(得分:2)
g++
期望在命令行上传递的文件是编译单元。头文件不是编译单元,因此不应该首先在命令行上传递。
答案 2 :(得分:0)
g ++ -Wall -Werror source.cpp
但您必须位于代码所在的同一目录中。