在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++ 提供了如