如何在其他目录中包含.c文件中的头文件

时间:2016-04-22 07:18:51

标签: c compilation c-preprocessor

我在这个目录结构中工作

root: Code
|--src
    |--client
        |--client.c
    |--server
        |--server.c
    |--lib
        |--utility.c
|--include
    |--prototype.h
    |--utility_lib.h

client.c文件中,我必须包含utility_lib.h文件。

#include "-I../../include/utility_lib.h" 它不起作用,可能是路线不正确。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:6)

只是

#include "../../include/utility_lib.h"

-I标志,您应该只添加到编译器设置

答案 1 :(得分:4)

您可以直接在代码中包含头文件:

// file client.c
#include "../../include/utility_lib.h"

或者您可以告诉编译器在哪里找到头文件:

// file client.c
#include <utility_lib.h>

编译命令,如果当前目录为client

gcc -c client.c -o client.o -I../../include

编译命令,如果当前目录为src

gcc -c src/client.c -o client.o -I../include

答案 2 :(得分:3)

更常见的方法是更改​​构建过程(例如,修改CFLAGS中的Makefile)以便传递

-I $TOPDIR/include/

到您的编译器。在Makefile内,您可能会定义一些变量TOPDIR=并将其用作$(TOPDIR)