在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
有人可以在这里建议正确的方法吗?
由于
西蒙
答案 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