c++ - 拥有与标准 header 同名的自己的 header 是否是未定义的行为?

标签 c++

多年来,我已经意识到我有自己的 header ,名为 algorithm.h

我总是把它包含在:

#include "algorithm.h"

相对于包含标准 header :

#include <algorithm>

我从来没有遇到过任何含糊不清的问题(甚至在 gcc 中也没有警告),但我想知道这是否只是运气。我喜欢标题的名称,我不想因为害怕而重命名它。

如果它不是未定义的行为,它是否被认为是不良风格?

最佳答案

不,这不是未定义的行为。除了作为标准库一部分的头文件之外,标准没有说明任何头文件。事实上,它甚至指定(C++11,第 16.2.3 节 [cpp.include])如果你要做类似的事情

#include "algorithm"

并且没有找到 header ,那么它做同样的事情

#include <algorithm>

是否有一个名为 algorithm.h 的 header 是糟糕的风格是值得商榷的。我会避免使用它,因为它可能会使 C++ 经验较少的程序员感到困惑。但是,如果您问我,像 utils/algorithm.h 这样的东西就可以了。

关于c++ - 拥有与标准 header 同名的自己的 header 是否是未定义的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21636730/

相关文章:

c++ - 内置类型的析构函数(int、char 等)

c++ - 防止通过程序自动锁定Windows(不更改任何系统设置)

c++ - 使用退格控制字符删除

c++ - 如何在拥有 bost POST 数据和 header 数据的同时使用 Casablanca 执行 API 调用?

c++ - 使用 Xcode 调试我的代码 C++

c++ - 如何在 Mac 上的 VS Code 中处理 C++ 头文件 #include 错误?

c++ - QT 上下文菜单仅在 QTreeView 选择上

c++ - Visual Studio 2019 不想为 LIB 发布生成 ASM 文件,我做错了什么?

c++ - 对齐坐标系

c++ - 使用CUDA和纹理进行图像减法