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

Compiling using Command Line g++ Question

本文关键字:g++ 问题 命令行 编译      更新时间:2023-10-16

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

我有1个。cpp文件和2个。h文件。

输入

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

问题是我得到一个错误。

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

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,它会编译得很好然而,当我添加。h文件时,我输入g++,它给了我上面所示的错误。知道为什么吗?

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

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

g++ -Wall -Werror source.cpp

但是你必须在代码所在的目录下