我有一个主目录A
和两个子目录B
和C
。
目录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<stdio.h>
#include<stdlib.h>
#include <structures.h>
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
中的正确方法是什么?
5条答案
按热度按时间2admgd591#
当引用头文件 * 相对于 * 你的c文件,你应该使用
#include "path/to/header.h"
格式
#include <someheader.h>
仅用于内部头或显式添加的目录(在gcc中带有-I
选项)。omvjsjqw2#
写
代替
然后进入c中的目录并编译你的main.c,
1dkrff033#
如果您处理Makefile项目或只是从命令行运行代码,请使用
gcc -IC main.c
其中
-I
选项将您的C
目录添加到要搜索头文件的目录列表中,因此您可以在项目中的任何位置使用#include "structures.h"
。l2osamch4#
如果您想使用命令行参数,则可以给予
gcc -idirafter ../b/ main.c
那么你不需要在程序中做任何事情。
vxf3dgd45#
用这个替换你的代码,不要忘记用你的文件所在的文件夹的路径替换
parent_directory
。我不知道你的文件structures.h
是否有.h
扩展名或.c
,所以请看看它.