我继承了C/C++代码库,并且在许多.cpp文件中,#include指令包含在#ifndef中,头文件是内部单包含#define.
例如
#ifndef _INC_WINDOWS
#include <windows.h>
#endif
Run Code Online (Sandbox Code Playgroud)
和windows.h看起来像
#ifndef _INC_WINDOWS
#define _INC_WINDOWS
...header file stuff....
#endif // _INC_WINDOWS
Run Code Online (Sandbox Code Playgroud)
我假设这样做是为了加快代码的编译/预处理.
我认为它很丑陋并且过早优化,但由于项目从清洁开始有5分钟的构建时间,我不想让事情变得更糟.
那么这种做法是否会增加任何价值或加快速度?清理它们可以吗?
更新:编译器是MSVC(VS2005),平台是Win32/WinCE
Codegear RAD Studio 2009中是否需要"冗余包括警卫"?编译器是否足够聪明,可以自行处理?
例如,我可能在foo.h中有以下'include guard':
#ifndef fooH
#define fooH
// ... declaration here
#endif
Run Code Online (Sandbox Code Playgroud)
以及use_foo.h中的以下'冗余包含保护':
#ifndef fooH
#include "foo.h"
#endif
Run Code Online (Sandbox Code Playgroud)
此外,如果编译器不够智能,如果它们包含在源文件中,那么"冗余包括警卫"是必需的.例如use_foo.cpp.?