error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
2015-03-10 16:44
309 查看
使用vs2010编写的程序,使用vs2013打开时报错。
打开winnt.h文件,发现问题就是在winnt.h头文件中无POINTER_64的定义造成的。搜索vc下的头文件,发现在basetsd.h头文件中有POINTER_64的定义,而在winnt.h头文件中也包含了该头文件。而在dxsdk中也有basetsd.h头文件,而该文件无POINTER_64的定义,因此编译通不过。网上说的改变包含头文件的顺序也没用。
我的解决方法:
1、直接将dxsdk中的basetsd.h头文件进行修改,在其中添加一行定义代码: #define
POINTER_64 __ptr64。
2、这是网上看到的方法,可以不用修改SDK文件:
在stdafx.h的开头,加上如下代码:
<span style="font-size:10px;">#ifndef POINTER_64
#if !defined(_MAC) && (defined(_M_MRX000) || defined(_M_AMD64) || defined(_M_IA64)) && (_MSC_VER >= 1100) && !(defined(MIDL_PASS) || defined(RC_INVOKED))
#define POINTER_64 __ptr64
typedef unsigned __int64 POINTER_64_INT;
#if defined(_WIN64)
#define POINTER_32 __ptr32
#else
#define POINTER_32
#endif
#else
#if defined(_MAC) && defined(_MAC_INT_64)
#define POINTER_64 __ptr64
typedef unsigned __int64 POINTER_64_INT;
#else
#if (_MSC_VER >= 1300) && !(defined(MIDL_PASS) || defined(RC_INVOKED))
#define POINTER_64 __ptr64
#else
#define POINTER_64
#endif
typedef unsigned long POINTER_64_INT;
#endif
#define POINTER_32
#endif
#endif
</span>
打开winnt.h文件,发现问题就是在winnt.h头文件中无POINTER_64的定义造成的。搜索vc下的头文件,发现在basetsd.h头文件中有POINTER_64的定义,而在winnt.h头文件中也包含了该头文件。而在dxsdk中也有basetsd.h头文件,而该文件无POINTER_64的定义,因此编译通不过。网上说的改变包含头文件的顺序也没用。
我的解决方法:
1、直接将dxsdk中的basetsd.h头文件进行修改,在其中添加一行定义代码: #define
POINTER_64 __ptr64。
2、这是网上看到的方法,可以不用修改SDK文件:
在stdafx.h的开头,加上如下代码:
<span style="font-size:10px;">#ifndef POINTER_64
#if !defined(_MAC) && (defined(_M_MRX000) || defined(_M_AMD64) || defined(_M_IA64)) && (_MSC_VER >= 1100) && !(defined(MIDL_PASS) || defined(RC_INVOKED))
#define POINTER_64 __ptr64
typedef unsigned __int64 POINTER_64_INT;
#if defined(_WIN64)
#define POINTER_32 __ptr32
#else
#define POINTER_32
#endif
#else
#if defined(_MAC) && defined(_MAC_INT_64)
#define POINTER_64 __ptr64
typedef unsigned __int64 POINTER_64_INT;
#else
#if (_MSC_VER >= 1300) && !(defined(MIDL_PASS) || defined(RC_INVOKED))
#define POINTER_64 __ptr64
#else
#define POINTER_64
#endif
typedef unsigned long POINTER_64_INT;
#endif
#define POINTER_32
#endif
#endif
</span>
相关文章推荐
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- 错误 1 error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面)
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面) 如何解决
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)[转]
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)[转]
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面)
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面) 如何解决
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)[转]
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- DX9.0 sdk开发中遇到的 winNT.h中错误error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面)
- error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
- cocos2d-x 在IDE vs2010 出现error C2146: 语法错误: 缺少“;”(在标识符“PVOID64”的前面)编译错误解决方案
- 解决vs error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)的问题
- error C2146: 语法错误: 缺少“;”(在标识符“WINAPI”的前面) 及 “error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int” 解决方案