在GitHub上查看不同的有趣项目时,我遇到了以下文件:
https://github.com/charliesome/slash/blob/master/src/lib/regexp.c
看起来他以与标准标头相同的方式包含自己的文件:
#include <slash/lib/regexp.h>
而不是这样:
#include "slash/lib/regexp.h"
我猜他改变了包含路径以使其成为可能,但我的问题是:为什么?引号语法不是为这种情况(包括您自己的头文件)制作的吗?
对于中等大小的项目,特别是可安装的项目,通常更方便的是将标头存储在单独的目录中,例如include/
在项目根目录下而不是在 C 文件旁边。
将此目录添加到包含路径后,<>
或""
的选择成为风格上的选择——""
仅对相对路径是必需的,或者如果您通过 -iquote
而不是 -I
添加包含目录,这不是特别常见。
使用""
的一个参数是将标头显式标记为特定于项目。
使用 <>
的一个参数是标头包含在用户和库代码中看起来相同。
只需更改 Makefile 中的包含路径,即可轻松更改项目的目录结构。例如,您可能一开始就myproj/src
中的所有标头,现在希望为所有标头提供一个额外的myproj/include
文件夹。