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

时间:2016-12-23 20:16:32

标签: c c-preprocessor

解释此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}}

在关注该评论后,如何理解此错误?我误解了吗?

2 个答案:

答案 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"