解释此comment后,
/***************** arrayImpl.c **************/
#include"list/list.h"
#if defined(ARRAY)
....
#endif
我在#include"list/list.h"
中使用./Computing/list/arrayImpl.c
计划Computing/list
编写了Computing/testList.c
list/list.h
,显示为here。
但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.
,如下所示
{{1}}
在关注该评论后,如何理解此错误?我误解了吗?
答案 0 :(得分:4)
#include "list/list.h"
与包含它的c文件位于同一目录中。当你这样做
/list
编译器尝试在包含路径+ list/list/list.h
中查找文件。例如,它会查找不会退出的#include "list.h"
。
那么可以改变为-I.
OR
使用list/list.h
将当前目录添加到命令行,以便gcc -Wall -g -I. -DARRAY ./list/*.c testList.c -o testList
位于包含路径中。
public static void main(String args[]) {
Window window = new Window(800, 650);
window.createWindow();
Game game = new Game();
game.start();
}
来自gcc search path documentation
-I。 -I-与no -I选项完全不同,并且不会导致'<>'的相同行为包括''“'包括没有特殊选项的get。的 -I。在编译器的当前工作目录中搜索头文件。这可能与包含当前文件的目录相同或不同。
在包含path的任何地方都没有提到包含当前目录的地方,gcc从该目录开始。
答案 1 :(得分:1)
您需要添加包含文件目录" list"。
https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html
gcc -Wall -g -DARRAY ./list/*.c testList.c -I list -o testList
你必须删除" list"来自" #include" list / list.h"。因为当你写这篇文章时,你告诉编译器在所有include目录中搜索一个文件" list / list.h"。但是" list.h"在"列表"。所以" list"没有必要。
#include "list.h"
你可以这样做,但它很难看
#include "../list/list.h"