【问题标题】:Is #endif GUARD_H good practice? [duplicate]#endif GUARD_H 是好的做法吗? [复制]
【发布时间】:2023-03-30 00:44:01
【问题描述】:
考虑一下:
#ifndef GUARD_H
#define GUARD_H
...
#endif GUARD_H
而不是:
#ifndef GUARD_H
#define GUARD_H
...
#endif // GUARD_H
我经常在#endif 看到一个“标识符”被注释掉,但没有注释它仍然有效。
#endif 之后的所有内容都被忽略还是...?
【问题讨论】:
标签:
c++
directive
conditional-compilation
【解决方案1】:
不,这不是有效的 C++:它的格式不正确。 # endif 和终止预处理指令行的换行符之间不能有标记。
如果您想重述 #if 指令中的条件,您可以在评论中这样做:
#endif // GUARD_H
但是,这实际上只是多余的,尤其是对于包含保护:如果它是头文件中的最后一个 #endif,那么几乎可以肯定的是要结束顶部使用的 #ifdef 以防止多重包含,不是吗?
在您可能有多个嵌套级别的条件指令的其他地方,这可能很有用,但即便如此,通常最好重构代码以使其更简单或更直接。 p>