#endif GUARD_H 是好的做法吗? [复制]

Posted

技术标签:

【中文标题】#endif GUARD_H 是好的做法吗? [复制]【英文标题】:Is #endif GUARD_H good practice? [duplicate] 【发布时间】:2011-02-17 15:24:05 【问题描述】:

考虑一下:

#ifndef GUARD_H
#define GUARD_H
...
#endif GUARD_H

而不是:

#ifndef GUARD_H
#define GUARD_H
...
#endif // GUARD_H

我经常在#endif 看到一个“标识符”被注释掉,但没有注释它仍然有效。

#endif 之后的所有内容都被忽略还是...?

【问题讨论】:

【参考方案1】:

不,这不是有效的 C++:它的格式不正确。 # endif 和终止预处理指令行的换行符之间不能有标记。

如果您想重述 #if 指令中的条件,您可以在评论中这样做:

#endif // GUARD_H

但是,这实际上只是多余的,尤其是对于包含保护:如果它是头文件中的最后一个 #endif,那么几乎可以肯定的是要结束顶部使用的 #ifdef 以防止多重包含,不是吗?

在您可能有多个嵌套级别的条件指令的其他地方,这可能很有用,但即便如此,通常最好重构代码以使其更简单或更直接。 p>

【讨论】:

以上是关于#endif GUARD_H 是好的做法吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Utils文件是好的做法吗? [关闭]

在同一个线程中多次锁定 CCriticalSection 是好的做法吗?

不使用约束是好的做法,或者至少不是坏做法

为啥从 main() 显式返回 0 被认为是好的做法? [复制]

Tailwind CSS 还是 Bootstrap?哪个被认为是好的做法? [关闭]

代码开头的分号仍然是好习惯吗?