如何#include <windows.h> </windows.h>

时间:2010-06-14 11:22:15

标签: c++ visual-studio-2008 include

在64位系统上使用MSVC2008,32位。

我曾经被建议永远不要将windows.h包含为'它真正的怪物,并且会大大减慢我的编译时间'。

我尝试将其删除,显然会出现编译错误。我包括windef.h来定义所有的DWORD等,但我很快就知道还有什么定义来编译代码。

我现在得到:

2>c:\program files\microsoft sdks\windows\v7.0\include\winnt.h(6361) : error C2146: syntax error : missing ';' before identifier 'ContextRecord'
2>c:\program files\microsoft sdks\windows\v7.0\include\winnt.h(12983) : error C2065: 'PCONTEXT' : undeclared identifier

有人可以在这里建议正确的方法吗?

由于

西蒙

4 个答案:

答案 0 :(得分:24)

使用预编译头来改善编译时间,并包含windows.h。

答案 1 :(得分:13)

在内部,windows.h遵守许多定义,如NOMINMAX或WIN32_LEAN_AND_MEAN。

它显着减少了时间。

答案 2 :(得分:8)

正确的答案是“将其包含在PCH中”。预编译的头文件大大减少了编译时间,与普遍认为的相反,Full Rebuild也是如此。

如果你的项目中有多个CPP文件,那么“Rebuild all”将为整个项目构建一次,这只需要几秒钟的时间来编译时间 - 将windows.h包含在所有项目中。

答案 3 :(得分:2)

研究API并确保标题包含在正确的顺序中。不使用Windows.h并不难;但是你将了解这个过程中的MS标题。

您需要注意几个标题:

WTypes.h
WinDef.h
WinBase.h
WinObject.h