包括来自另一个目录的头文件

我有一个主目录A有两个子目录BC

目录B包含头文件structures.c

 #ifndef __STRUCTURES_H #define __STRUCTURES_H typedef struct __stud_ent__ { char name[20]; int roll_num; }stud; #endif 

目录C包含main.c代码:

 #include #include #include  int main() { stud *value; value = malloc(sizeof(stud)); free (value); printf("working \n"); return 0; } 

但是我收到一个错误:

 main.c:3:24: error: structures.h: No such file or directory main.c: In function 'main': main.c:6: error: 'stud' undeclared (first use in this function) main.c:6: error: (Each undeclared identifier is reported only once main.c:6: error: for each function it appears in.) main.c:6: error: 'value' undeclared (first use in this function) 

structures.h文件包含到main.c的正确方法是什么?

当引用对于c文件的头文件时,你应该使用#include "path/to/header.h"

表单#include 仅用于内部标头或显式添加的目录(在带有-I选项的gcc中)。

 #include "../b/structure.h" 

代替

 #include  

然后进入c目录并编译你的main.c

 gcc main.c 

如果您处理Makefile项目或只是从命令行运行代码,请使用

gcc -IC main.c

其中-I选项将您的C目录添加到要搜索头文件的目录列表中,这样您就可以在项目的任何位置使用#include "structures.h"

如果要使用命令行参数,则可以给gcc -idirafter ../b/ main.c

那么你不必在你的程序中做任何事情。