评论会阻止标头防护优化吗?

Ром*_*тев 1 c optimization comments header-files c-preprocessor

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

// Some comment
#ifndef HEADER_GUARD
#define HEADER_GUARD

#endif
Run Code Online (Sandbox Code Playgroud)

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

cma*_*ter 9

是的,这个优化已经完成.gcc在此明确记录:https://gcc.gnu.org/onlinedocs/cppinternals/Guard-Macros.html

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