包含windows.h出错的问题
来源:互联网 发布:lol mac版国服 编辑:程序博客网 时间:2024/04/28 04:27
在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_LEAN_AND_MEAN
VC_EXTRALEAN 定义 WIN32_LEAN_AND_MEAN 和若干 NOservice 定义,如 NOCOMM 和 NOSOUND。(有关 NOservice 定义列表,请参见头文件 Windows.h 和 MFC 头文件 afxv_w32.h。)
用 Visual C++ 应用程序向导创建的应用程序自动使用 VC_EXTRALEAN。可以在旧式 MFC 应用程序中手动定义 VC_EXTRALEAN 以加速生成过程。
非 MFC 应用程序可以定义 WIN32_LEAN_AND_MEAN 和适用的 NOservice 定义以减少生成时间。
由于我要用到的win32 api函数都是常见的,所以定义这个宏应该不会有太大影响,问题算是解决了。
- 包含windows.h出错的问题
- 程序里包含windows.h 和 Winsock2.h出错
- winsock.h与winsock2.h的区别(同时包含windows.h和winsock2.h报错重定义的问题)
- windows.h与winsock2.h的包含顺序引起的问题
- windows.h与winsock2.h的包含顺序引起的问题
- stdafx.h 包含的头文件出错,导致大问题.
- WFP在包含fwpmu.h头的时候出错
- Windows C++程序调用包含TensorFlow代码的Python脚本出错问题的解决办法
- windows.h与winsock2.h的包含顺序
- windows.h与winsock2.h的包含顺序
- 【windows】套接口编程 - 包含winsock2.h的重定义问题
- 解决不能包含mysql.h的问题
- 某些时候windows.h如何被包含进来的
- 2.c的多文件编译技巧---“.h”文件的多重包含防出错
- 在CXXFrame里包含CXXView头文件出错的问题
- 解决VC中包含的unistd.h头文件问题
- 关于无法打开包含文件:“fstream.h” 的问题
- cocos2dx-3.12包含cocos-ext.h编译不过的问题
- osgin命令
- 闪睿企业的网站管理系统
- VSS详解
- prototype面向对象解读
- 关于MYSQL数据库导入数据乱码总结
- 包含windows.h出错的问题
- 嵌入式linux启动信息完全注释
- 走进Zend Framework框架编程(六):视图(1)
- 横版过关游戏源码
- Dojo隐藏表单域
- 一个80后程序员的奋斗(转)
- 开源协议
- 不能正常打开JSP文件!
- maven2 eclipse 插件wizard 无法使用问题及解决