解读此评论后,
/***************** arrayImpl.c **************/
#include"list/list.h"
#if defined(ARRAY)
....
#endif
Run Code Online (Sandbox Code Playgroud)
我写#include"list/list.h"
的./Computing/list/arrayImpl.c
测试Computing/list
使用ADTComputing/testList.c
程序,显示在这里。
但是list/list.h
找不到list/arrayImpl.c
,如下图,
PC ~/code_practice/Computing
$ gcc -Wall -g -DARRAY ./list/*.c testList.c -o testList
./list/arrayImpl.c:3:22: fatal error: list/list.h: No such file or directory
compilation terminated.
./list/linkedListImpl.c:3:22: fatal error: list/list.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
在遵循该评论后,我如何理解此错误?我误解了吗?
list.h
与包含它的 c 文件位于同一目录中。当你做
#include "list/list.h"
Run Code Online (Sandbox Code Playgroud)
编译器尝试在包含路径 + 中查找文件/list
。例如,它将寻找list/list/list.h
不存在的。
那么什么会起作用将改变为 #include "list.h"
或者
使用-I.
so list/list.h
is in include path将当前目录添加到命令行。
gcc -Wall -g -I. -DARRAY ./list/*.c testList.c -o testList
Run Code Online (Sandbox Code Playgroud)
-一世。-I- 与没有 -I 选项完全不同,并且不会导致 '<>' 包括 '""' 包括没有特殊选项的 get 的相同行为。-一世。在编译器的当前工作目录中搜索头文件。这可能与包含当前文件的目录相同,也可能不同。
在包含路径的任何地方都没有提到包含当前目录,gcc 是从该目录启动的。