错误:没有这样的文件或目录-C

错误:没有这样的文件或目录-C,c,c-preprocessor,C,C Preprocessor,解释完这个, 我在/Computing/list/arrayImpl.c中编写了#include“list/list.h”,用于使用Computing/testList.c程序测试Computing/listADT,如图所示 但是list/arrayImpl.c找不到list/list.h,如下所示 PC ~/code_practice/Computing $ gcc -Wall -g -DARRAY ./list/*.c testList.c -o testList ./list/arrayI

解释完这个,

我在
/Computing/list/arrayImpl.c
中编写了
#include“list/list.h”
,用于使用
Computing/testList.c
程序测试
Computing/list
ADT,如图所示

但是
list/arrayImpl.c
找不到
list/list.h
,如下所示

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.

在遵循该评论之后,我如何理解此错误?我解释错了吗?

您需要添加包含文件目录“列表”

gcc-Wall-g-DARRAY./list/*.c testList.c-I list-o testList

您必须从#include“list/list.h”中删除“list”。因为当您写入时,您告诉编译器在所有include目录中搜索一个文件“list/list.h”。但是“list.h”在“list”中。因此“list”不是必需的

#include "list.h"

你可以这么做,但很难看

#include "../list/list.h"

list.h
与包含它的c文件位于同一目录中

#include "list/list.h"
编译器尝试在include path+
/list
中查找文件。例如,它将查找不存在的
list/list/list.h

因此,将工作改为
#include“list.h”

使用
-I将当前目录添加到命令行。
因此
list/list.h
位于include路径中

gcc -Wall -g -I. -DARRAY ./list/*.c testList.c -o testList

-I.-I-与no-I选项完全不同,并且不会导致“includes that”的行为相同。“includes that”包含没有特殊选项的get。-I.搜索编译器当前工作目录中的头文件。这可能与包含当前文件的目录相同,也可能不同。


没有提到包含路径的任何地方包含当前目录,gcc就是从这个目录开始的。

@Jean Françoisfare我用
arrayImpl.c
code
$gcc-Wall-g-DARRAY./list/*.c testList.c-I list-o testList
编辑了我的查询error@overexchange修正了我的问题,我做了很多测试,但评论是错误的。检查我的编辑,文档没有谈到当前目录。当gcc文档说:这可能与包含当前文件的目录相同,也可能不同。这意味着,在此上下文中,目录
列表
包含当前文件
arrayImpl.c
。正确吗?是的,正确。当前编译的文件目录是自动的除非文件是使用
包含的,否则只能添加到此编译的编译器搜索路径,这会告诉您不要包含当前编译的文件目录。
gcc -Wall -g -I. -DARRAY ./list/*.c testList.c -o testList