在一个不那么小的项目(> 100 .h
)中,我想确保每个.h
使用不同的包含警戒(#ifndef XXX
)。
每当我违反它时,我都希望尽快得到通知。
这是我正在使用的惯例(半自动生成,VS2015): -
foo.h中
#ifndef Foo_h__
#define Foo_h__
//....... some long code .........
#endif //Foo_h__
有时候(每1-4周一次),在我创建新文件,复制粘贴源或重构(重命名)之后,我对包含警卫犯了一些错误。结果: -
如何预防和治疗包括警卫的重复?
#pragma once
缺点:这是compiler specific。我不希望我的代码依赖于编译器。
(编辑,感谢 Benjamin Lindley 和 Beta 。)
我可以编写自动代码生成脚本。 这是a possible standard: -
<project>_<path_part1>_..._<path_partN>_<file>_<extension>_INCLUDED
缺点:需要外部脚本。
答案 0 :(得分:0)
由于#pragma once
不能完全移植,我的建议是在构建此简单的bash脚本之前运行程序:
find . -name '*.h' -o -name '*.hpp' | xargs -n1 -d '\n' grep "#ifndef .*_H.*" | sort | uniq -cd
它最终显示有多少文件使用相同的包含保护,而确切的包含保护会重复出现。