如何不#include <windows.h>

问题描述 投票:0回答:5

在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

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

谢谢

西蒙

c++ visual-studio-2008 include
5个回答
24
投票

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


14
投票

在内部,windows.h 尊重许多定义,例如 NOMINMAX 或 WIN32_LEAN_AND_MEAN。

显着减少时间。


8
投票

正确的答案是“将其包含在 PCH 中”。预编译头极大地减少了编译时间,并且与普遍看法相反,完全重建也是如此。

如果您的项目中有多个 CPP 文件,“全部重建”将为整个项目构建一次,这只会增加几秒钟的编译时间 - 将 windows.h 包含在所有文件中。


2
投票

研究 API 并确保标头按正确的顺序包含。不使用 Windows.h 并不难;但您将在此过程中了解 MS 标头。

您必须注意一些标头:

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

0
投票

我正在使用 Replit,但它找不到 windows.h...有什么想法吗?

© www.soinside.com 2019 - 2024. All rights reserved.