错误:没有这样的文件或目录 – 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"