注释会阻止 header 守卫优化吗?
Do comments prevent a header guard optimization?
C 编译器是否缓存 header 文件并在文件以注释开头时只解析一次?
// Some comment
#ifndef HEADER_GUARD
#define HEADER_GUARD
#endif
问题是关于编译器的,它可以缓存 headers 以不解析它们超过一次。
是的,这个优化完成了。 gcc
在这里非常明确地记录它:https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html
基本上,如果你有一个 well-written include 守卫,gcc
不会触及 header 两次。包含保护之外的注释不会停止优化(否则几乎所有 open-source header 文件之前的所有许可注释将毫无价值)。
C 编译器是否缓存 header 文件并在文件以注释开头时只解析一次?
// Some comment
#ifndef HEADER_GUARD
#define HEADER_GUARD
#endif
问题是关于编译器的,它可以缓存 headers 以不解析它们超过一次。
是的,这个优化完成了。 gcc
在这里非常明确地记录它:https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html
基本上,如果你有一个 well-written include 守卫,gcc
不会触及 header 两次。包含保护之外的注释不会停止优化(否则几乎所有 open-source header 文件之前的所有许可注释将毫无价值)。