在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
有人可以在这里建议正确的方法吗?
谢谢
西蒙
使用预编译头来缩短编译时间,并包含 windows.h。
在内部,windows.h 尊重许多定义,例如 NOMINMAX 或 WIN32_LEAN_AND_MEAN。
显着减少时间。
正确的答案是“将其包含在 PCH 中”。预编译头极大地减少了编译时间,并且与普遍看法相反,完全重建也是如此。
如果您的项目中有多个 CPP 文件,“全部重建”将为整个项目构建一次,这只会增加几秒钟的编译时间 - 将 windows.h 包含在所有文件中。
研究 API 并确保标头按正确的顺序包含。不使用 Windows.h 并不难;但您将在此过程中了解 MS 标头。
您必须注意一些标头:
WTypes.h
WinDef.h
WinBase.h
WinObject.h
我正在使用 Replit,但它找不到 windows.h...有什么想法吗?