我意识到多年来我有自己的标题algorithm.h
。
我总是把它包括在内:
#include "algorithm.h"
而不是包含标准标题:
#include <algorithm>
我从来没有遇到任何问题(甚至没有gcc中的警告),但我不知道这只是运气。我喜欢我的标题的名称,我不想仅仅出于恐惧而重命名。
如果它不是未定义的行为,它被认为是不好的风格吗?
答案 0 :(得分:3)
不,这不是未定义的行为。除了属于标准库的标题之外,标准没有说明任何标题。事实上,它甚至指定(C ++ 11,第16.2.3节[cpp.include]),如果你要做类似的事情
#include "algorithm"
并且找不到标题,那么它与
完全相同#include <algorithm>
是否有一个名为algorithm.h
的标题是糟糕的风格是值得商榷的。我会避免它,因为它可能会使编程人员在C ++方面的经验感到困惑。但是,如果你问我,utils/algorithm.h
之类的东西会很好。
答案 1 :(得分:2)
这绝对不是很好的风格,你确实很幸运。
当您用引号
包围文件时,会发生什么#include "algorithm.h"
编译器首先在用户定义的路径中查找标头。
用括号括起文件时,
#include <algorithm>
编译器首先检查系统文件夹中的头文件。
因此包含两个头文件。但是,您需要注意覆盖单独头文件中定义的变量。
希望这有帮助!