相关疑难解决方法(0)

在#ifndef中包装#includes - 添加任何值?

我继承了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

c++ include c-preprocessor

4
推荐指数
1
解决办法
1210
查看次数

多余包含必要的警卫?

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.?

c++ include-guards include c++builder-2009

4
推荐指数
1
解决办法
2097
查看次数