【问题标题】:Do comments prevent a header guard optimization?注释会阻止标头保护优化吗?
【发布时间】:2017-11-23 08:13:07
【问题描述】:

如果文件以注释开头,C 编译器是否缓存头文件并仅解析一次?

// Some comment
#ifndef HEADER_GUARD
#define HEADER_GUARD

#endif

问题是关于编译器,它可以缓存标头以不多次解析它们。

【问题讨论】:

  • 这取决于实现。编译器可能会也可能不会缓存此信息。一些编译器有#pragma once,它可能比标题保护更有效。麻生太郎读到:stackoverflow.com/questions/1143936/…

标签: c optimization comments c-preprocessor header-files


【解决方案1】:

是的,这个优化已经完成。 gcc 在这里非常明确地记录了它:https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html

基本上,如果你有一个写得很好的包含保护,gcc 不会接触到标题两次。并且包含保护之外的注释不会停止优化(否则对于几乎所有开源头文件之前的所有许可证 cmets 将毫无价值)。

【讨论】:

    猜你喜欢
    • 2010-09-11
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2013-02-13
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多