Joe*_*e.F 8 c++ standards-compliance include-guards
我目前正在执行以下操作,编译器(MSVC2008 /以及2010)没有抱怨它,但我不确定这是不是一个坏主意:
#ifndef FOO_H_
#define FOO_H_
// note, FOO_H_ is not a comment:
#endif FOO_H_
Run Code Online (Sandbox Code Playgroud)
我以前总是写它,#endif // FOO_H_但我发现自己今天不这样做,并认为它很奇怪,因为显然我暂时没有做评论方法.
这是不好的做法,我应该通过我的所有标题和修复(它是一个跨平台的应用程序)或者是否可以保持它的方式?
严格地说(根据标准中的语法)#endif在同一行上的指令之后不允许使用令牌(评论是可以的,因为它们在翻译的早期阶段被移除而不是预处理指令 - 阶段3与4).
但是,MSVC似乎允许它 - 我不会继续寻求解决这些问题(因为它们不会导致问题),但是当您修改具有它们的标头时,可能会做出精心修复它们.
当然,如果您的其他受支持的编译器发出有关它们的诊断信息,则修复它们可能更为紧迫.