错误:没有这样的文件或目录 – C.
解释这个评论后 ,
/***************** arrayImpl.c **************/ #include"list/list.h" #if defined(ARRAY) .... #endif
我在./Computing/list/arrayImpl.c
写了#include"list/list.h"
,用于使用Computing/testList.c
程序测试Computing/list
ADT,如下所示。
但是list/list.h
list/arrayImpl.c
找不到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.
在关注该评论后,我如何理解这个错误? 我误解了吗?
list.h
与包含它的c文件位于同一目录中。 当你这样做
#include "list/list.h"
编译器尝试在include path + /list
查找文件。 例如,它将查找不退出的list/list/list.h
那么什么工作将改为#include "list.h"
要么
使用-I.
将当前目录添加到命令行-I.
所以list/list.h
在include路径中。
gcc -Wall -g -I. -DARRAY ./list/*.c testList.c -o testList
从gcc搜索路径文档
-一世。 -I-与no -I选项完全不同,并且不会导致’<>‘的相同行为包括”“’包括没有特殊选项的get。 -一世。 在编译器的当前工作目录中搜索头文件。 这可能与包含当前文件的目录相同,也可能不同。
没有提到包含path的路径包含当前目录,gcc从该目录开始。
您需要添加包含文件目录“list”。
https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html
gcc -Wall -g -DARRAY ./list/*.c testList.c -I list -o testList
并且您必须从“#include”list / list.h中删除“list”。因为当您编写时,您告诉编译器在所有include目录中搜索文件“list / list.h”。但是“list.h” “在”列表中“。所以”列表“不是必需的。
#include "list.h"
你可以这样做,但它很难看
#include "../list/list.h"