【问题标题】: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>

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 2016-09-19
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多