#include“现有文件”失败:没有这样的文件(C)

时间:2014-02-23 15:50:49

标签: c gcc include makefile

使用gcc编译C. 而

#include "/absolute/path/to/my/file" 

工作正常,

#include "../../relative/path/to/my/file" 

失败,“没有这样的文件或目录”。仅当文件放在项目目录之外时才会发生这种情况。文件具有读取权限。可能是什么原因?

3 个答案:

答案 0 :(得分:2)

使用格式时

#include "some_file.h"

默认情况下,预处理器与源文件位于同一目录中,如果在那里找不到该文件,它会查找头文件搜索路径。

如果头文件与源文件不在同一目录中,而不在预处理器search-path的某个目录中,则无法找到它。

可以编写相对路径或完整路径:

#include "../some_directory/some_file.h"

答案 1 :(得分:0)

答案 2 :(得分:0)

使用gcc和本地头文件时,需要在构建命令中添加包含路径。

mysource.c:

#include "localfile.h" 

构建命令:

gcc -o program mysource.c 

只要头文件与源(运行命令的位置)位于同一目录中,此方法就可以正常工作。如果您的头文件位于不同的目录中,则可以使用-I选项包含:

gcc -I../headerdir -o hello.exe hello.c 

或绝对的道路:

gcc -I/home/user/myprogra/headerdir -o hello.exe hello.c