在C或C++中包含标头的正确方法

Nam*_*tan 0 c c++ makefile

我刚刚发现我一直在做这个错误.我没有使用任何ide,只使用gcc.我也开始使用makefile来编译我的大项目.

大多数时候文件结构都是这样的

??? makefile
??? src
    ??? folder1
    ?   ??? header1.cpp
    ?   ??? header1.h
    ??? folder2
    ?   ??? header2.cpp
    ?   ??? header2.h
    ??? main.cpp
Run Code Online (Sandbox Code Playgroud)

header2.cpp,当我包括header1.h我这样做

file header2.cpp

#include "../folder1/header1.h"
Run Code Online (Sandbox Code Playgroud)

这是我如何包含其他文件夹中的其他文件.我想我做错了.我观看的大多数教程都使用了Ide,它们并没有像这样包含它.

有些像这样包括它

#include "folder1/header1.h"
Run Code Online (Sandbox Code Playgroud)

或者其他人把它放在一个像这样的文件夹中 headers/

然后像这样包括它.

#include "header1.h"
Run Code Online (Sandbox Code Playgroud)

任何人都可以指导我.我该如何实现这一目标.我猜这一点我做得很糟糕.

我不想包含这样的文件

 #include "../../../../sofarfolder1/header1.h"
Run Code Online (Sandbox Code Playgroud)

谢谢.它让我每次看到我的代码时都会呕吐.

eml*_*lai 6

如果您不想使用,可以使用该-Idir标志告诉GCC在目录中查找头文件.dir../

更多信息:https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html


Kev*_*vin 5

https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html

在你的makefile中,你可以调用gcc -I../../../sofardirectory

这样,它将在该目录中查找您包含的标头.