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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包括来自另一个目录的头文件相关的知识,希望对你有一定的参考价值。

我有一个主目录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<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的正确方法是什么?

答案

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

形式#include <someheader.h>仅用于内部标头或明确添加的目录(在gcc中使用-I选项)。

另一答案

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

代替

#include <structures.h>

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

gcc main.c
另一答案

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

gcc -IC main.c

其中-I选项将您的C目录添加到要搜索头文件的目录列表中,因此您将能够在项目中使用#include "structures.h"anywhere。

另一答案

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

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

以上是关于包括来自另一个目录的头文件的主要内容,如果未能解决你的问题,请参考以下文章

linux查看包含的头文件源文件

来自另一个片段的 Snackbar 回调

/usr/include 中的头文件来自哪里? Linux内核代码或Gcc

VC里 如何引用另一个工程的头文件?

包括来自另一个文件的运算符重载

使用 php 包括来自另一台服务器的 php 文件