【问题标题】:How to include header file in .c from other directories如何在 .c 中包含来自其他目录的头文件
【发布时间】:2016-08-15 16:57:45
【问题描述】:
我正在这个目录结构中工作
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"
不行,可能路径不对。
谁能帮帮我?
【问题讨论】:
标签:
c
compilation
c-preprocessor
【解决方案1】:
只是
#include "../../include/utility_lib.h"
-I 标志你应该只添加到编译器设置中
【解决方案2】:
您可以直接在代码中包含头文件:
// 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
【解决方案3】:
更常用的方法是更改您的构建过程(例如,在您的 Makefile 中编辑 CFLAGS)以便通过
-I $TOPDIR/include/
到你的编译器。在Makefile 中,您可能会定义一些make 变量TOPDIR= 并将其用作$(TOPDIR)