拥有自己的标题与标准标头相同的标题是不确定的
Is it undefined behavior to have your own header with the same name as a standard header?
我已经意识到,多年来,我都有自己的标题名为 algorithm.h
。
我始终将其包含在:
#include "algorithm.h"
而不是包含标准标题:
#include <algorithm>
我从来没有遇到任何问题(甚至在GCC中没有警告),但我想知道这是否只是运气。我喜欢我的标题名称,我不想出于恐惧而重命名。
如果它不是不确定的行为,是否被认为是不良风格?
不,这不是不确定的行为。该标准除了标准库的一部分外,没有任何其他标题。实际上,它甚至指定(C 11,第16.2.3节[cpp.include]),如果您要做
之类的事情#include "algorithm"
找不到标头,然后它与
相同#include <algorithm>
是否有名为algorithm.h
的标题是不好的样式。我会避免使用它,因为它可能会使程序员在C 方面的经验较少。但是,如果您问我,例如utils/algorithm.h
会很好。
这绝对不是很好的风格,您确实很幸运。
当您用引号包围文件
时,发生了什么事#include "algorithm.h"
编译器首先在用户定义的路径中寻找标题。
当您用括号包围文件时,
#include <algorithm>
编译器首先检查标头文件的系统文件夹。
因此,两个标头文件都包含在内。但是,您确实需要提防在单独的标头文件中定义的变量的覆盖。
希望这会有所帮助!
相关文章:
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 不确定如何装饰我的C++库代码以在 C 中使用
- C++功能泄漏内存,我是C++新手,不确定如何解决
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 代码在 CodeSignal 中工作不正确。不确定这是否是我的代码缺陷
- 为什么以下代码是不确定的?
- 编译错误:"lvalue required as left operand of assignment" 不确定原因
- 误用指针会产生分段错误。我仍然不确定如何纠正它
- 我不确定为什么代码没有运行,它在编译时抛出错误,说它无法找到 PrintArray()
- 不确定出了什么问题(字符串输入)
- C++睡眠时间不确定
- 在C++中做一个场景问题,我不确定如何处理布尔和if循环
- 代码输出随机符号,我不确定出了什么问题
- 可变值变化,不确定原因
- 有没有办法让C++从 cin 中接收不确定数量的字符串?
- 尝试一次将单个字符读取到大小不确定的数组中
- 我不确定如何引用此神经网络训练方法中的权重
- 函数参数:不确定排序还是未排序?
- 拥有自己的标题与标准标头相同的标题是不确定的
- 在标题文件中列出的对象,但在CPP文件中却不确定引用