如何#include <windows.h>

sip*_*ipi 7 c++ include visual-studio-2008

在64位系统上使用32位32位MSVC2008.

我曾经被建议永远不要将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
Run Code Online (Sandbox Code Playgroud)

谁能在这里建议正确的方法?

谢谢

西蒙

Sjo*_*erd 24

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

  • +1问题不在于包含windows.h,而在于构建速度.并行构建也应该有帮助(例如IncrediBuild) (2认同)

Pav*_*sky 13

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

它显着减少了时间.

  • WIN32_LEAN_AND_MEAN - 用于减小头文件的大小并加快编译速度.不包括加密,DDE,RPC,Windows Shell和Winsock等内容. (9认同)

Pav*_*sky 8

正确答案是"将其包含在PCH中".预编译的头文件大大减少了编译时间,并且与普遍看法相反,Full Rebuild也是如此.

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