现代编译器是否有任何有意义的缺点,从头文件的开头开始发表评论?
就像great_header.h
中的以下内容:
/*
* this file defines the secret to life
* etc
* (c) 2017 ascended being
*/
#pragma once
#ifndef NAMESPACE_GREAT_HEADER_H_
#define NAMESPACE_GREAT_HEADER_H_
... (actual contents)
#endif // ifndef NAMESPACE_GREAT_HEADER_H_
在过去,我首先记得#34; #pragma once
这样的警告,如果它是文件中的第一行",以及类似的包含保护优化规则 - 但我和#39;我不确定是否仍然如此。这对我来说很方便,对于自动化工具来说,如果评论可能是文件中的第一件事,那么它就会提取标题信息。
答案 0 :(得分:6)
根据GCC Preprocessor Internals手册,多重包含优化机制不受评论影响:
多重包含优化
在什么情况下这样的优化有效?如果第二次包含该文件,则只有在包含将导致没有要返回的标记且没有相关的指令要处理时才能对其进行优化。因此,当前的实施规定了要求,并做出如下的一些限制:
- 控制
醇>#if-#endif
对之外必须没有令牌,但是 允许使用空白和评论。
它没有提到#pragma once
那里,我怀疑它是分开处理的。参考2.5 Alternatives to Wrapper #ifndef:
另一种防止头文件被包含的方法 曾经是'
#pragma once
'指令。 如果看到“#pragma once
” 扫描头文件时,永远不会再读取该文件 无论如何。