c++ - 包括头文件样式 - C++

标签 c++ header-files

我有一个具有以下目录结构的项目。

root
--include
----module1
----module2
--src
----module1
----module2

所以 src/module1 中的 foo.cpp 文件必须包含 like,

#include "../../include/module1/foo.hpp"

这看起来很乱而且很难写。我发现写作包括像

#include <module1/foo.h>

并在编译时提供到 root/include 的包含文件搜索路径看起来很整洁。但是,我不确定这种风格有什么缺点。

你更喜欢哪一个,为什么?另外,您是否发现以上述方式组织文件有任何问题?

最佳答案

#include "../../include/module1/foo.hpp"

应尽可能避免指定路径。编译器为您提供了一个更简洁的替代方案来实现相同的目标。此外,干净的设计应该确保您不需要为包含 header 而处理相对路径。

更好地了解使用哪一个(包括是使用引号还是尖括号) 可以从标准中得到。

来 self 的 C++ 草稿拷贝:

16.2 Source file inclusion

2 A preprocessing directive of the form

#include <h-char-sequence> new-line`

searches a sequence of implementation-defined places for a header identified uniquely by the specified sequence between the < and > delimiters, and causes the replacement of that directive by the entire contents of the header. How the places are specified or the header identified is implementation-defined.

3 A preprocessing directive of the form

# include "q-char-sequence" new-line 

causes the replacement of that directive by the entire contents of the source file identified by the specified sequence between the " delimiters. The named source file is searched for in an implementation-defined manner. If this search is not supported, or if the search fails, the directive is reprocessed as if it read

#include <h-char-sequence> new-line`

with the identical contained sequence (including > characters, if any) from the original directive.

7 Although an implementation may provide a mechanism for making arbitrary source files available to the < > search, in general programmers should use the < > form for headers provided with the implementation, and the " " form for sources outside the control of the implementation.

关于c++ - 包括头文件样式 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2156349/

相关文章:

c++ - 为什么类可以定义在头文件中?

c++ - 我应该如何为我的程序设置我的包含布局?

c++ - 1024f 整数常量的无效后缀 "F"

c++ - ftp 服务器的 makefile - 修改头文件时编译

c++ - vector 存储对象

c++ - 什么时候会使用 "signed char"而不是 "unsigned char"?

CodeBlocks header 公用文件夹

php - 缺少 PHP 包括 (.h)

c++ - 将用户值(value)与枚举中的值(value)进行比较

c++ - 通过指针使用 C++ 恢复 char 数组的问题