【发布时间】:2018-05-07 05:26:41
【问题描述】:
我在某处读到(抱歉找不到链接了)头文件的第一行应该始终是#include 保护,因为编译器可以在不打开头文件的情况下看到它。因此,如果头文件已经包含在内,它不会打开文件而只是再次关闭它,这会加快构建过程。
但是我总是在每个文件的开头都有一个注释块。所以我的问题是,#include 防护应该写在评论块之前还是之后?
这种风格更好吗:
///////////////////////
// Name: code.h
// Author: Me
// Date: dd.mm.yyyy
// Description: This code executes a specific task
///////////////////////
#ifndef CODE_H_
#define CODE_H_
...
#endif
或者这种风格更好:
#ifndef CODE_H_
#define CODE_H_
///////////////////////
// Name: code.h
// Author: Me
// Date: dd.mm.yyyy
// Description: This code executes a specific task
///////////////////////
...
#endif
或者根本不重要?
【问题讨论】:
-
如果你真的想保护几纳秒,你必须在第一个可能的地方写! ;) 这样的事情对于所有软件人的生活来说真的很重要。如果这是您遇到的最重要的问题之一,那么您的处境非常好!顺便说一句:编译器无论如何都必须打开文件...包含 gard 没有在其他地方表示。
-
@Klaus 我知道这并不是什么大事,但我只是好奇。 :)
-
之前。预处理器必须处理的行越少越好。我曾经有一个编译器(Watcom),它可以直接打印出包含的行数,并且始终保持至少 1:100 的比例。
-
很遗憾你找不到链接,否则我会告诉你从现在开始忽略消息来源所说的一切。也就是说,如果它确实说出了您声称的内容。你很可能记错了。编译器不打开文件就看不到包含保护。他们能做的,而且确实能做的,就是记住某个文件有包含保护,这样他们就可以避免再次打开它。守卫是文件中的第一件事还是跟随一些 cmets 并不重要。
标签: c++ performance compilation header-files include-guards