包含windows.h出错的问题

在Win32 Console编程时,包含windows.h引发类型错误,涉及rpcndr.h和wtypes.h。通过定义WIN32_LEAN_AND_MEAN宏避免引入不常用API,从而解决编译错误。该宏有助于减少生成时间,适用于不需要不常用API的常见win32 API函数应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在win32 console编程中,出现包含windows.h就会报错的情况,具体如下

../vc/platformsdk/include/rpcndr.h(147) : error C2632: “char”后面的“int”非法

../vc/platformsdk/include/rpcndr.h(147) : warning C4091: “typedef ”: 没有声明变量时忽略“unsigned char”的左侧

../vc/platformsdk/include/wtypes.h(1075) : error C2371: “BOOLEAN”: 重定义;不同的基类型       

 ../vc/platformsdk/include/winnt.h(770) : 参见“BOOLEAN”的声明

不知道什么原因,出现了类型重复定义,解决不了,打开windows.h,查找看是否有包含rpcndr.h和wtypes.h这两个头文件,

结果没有发现直接包含这两个头文件,但是发现了如下代码

#ifndef WIN32_LEAN_AND_MEAN

...

#include <rpc.h>

...

#endif

由于rpc.h和rpcndr.h相似,所以我推测rpc.h很可能就是引入rpcndr.h文件的地方,所以

我将代码改为如下,

#define   WIN32_LEAN_AND_MEAN

#include <windows.h>

结果编译通过了,程序执行也没有什么问题。为了搞清是什么原因,打开MSDN,查询宏WIN32_LEAN_AND_MEAN的作用,如下

为加速生成过程,Visual C++ 提供了如下定义(这些定义通过排除一些不太常用的 API,减小了 Win32 头文件的大小):

VC_EXTRALEAN

WIN32

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值