程序编译出错,缺少类型说明符;语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
生活随笔
收集整理的這篇文章主要介紹了
程序编译出错,缺少类型说明符;语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1>正在編譯...?
1>stdafx.cpp?
1>E:/VS2005/VC/PlatformSDK/include/winnt.h(222) : error C2146: 語法錯誤 : 缺少“;”(在標識符“PVOID64”的前面)?
1>E:/VS2005/VC/PlatformSDK/include/winnt.h(222) : error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支持默認 int?
1>E:/VS2005/VC/PlatformSDK/include/winnt.h(5940) : error C2146: 語法錯誤 : 缺少“;”(在標識符“Buffer”的前面)?
1>E:/VS2005/VC/PlatformSDK/include/winnt.h(5940) : error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支持默認 int?
1>E:/VS2005/VC/PlatformSDK/include/winnt.h(5940) : error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支持默認 int 問題補充:我的編譯環境為visual studio 2005 SP1(由于在vista下,所以還打了vs2005 for vista的補丁)。?
打開winnt.h文件,發現問題就是在winnt.h頭文件中無POINTER_64的定義造成的。搜索vc下的頭文件,發現在basetsd.h頭文件中有POINTER_64的定義,而在winnt.h頭文件中也包含了該頭文件。于是直接把basetsd.h頭文件中關于POINTER_64的宏定義(#define POINTER_64 __ptr64)抄過來,放在?
typedef void *PVOID;?
typedef void * POINTER_64 PVOID64;?
這兩句的前面,再編譯就無該問題了。?
雖然如此解決了編譯問題,但總覺得不妥,于是又在網上搜了一下。發現也有人跟我一樣的解決,但在microsoft的論壇上發現問題其實是頭文件搜索順序引起的。由于我安裝了dxsdk9,dxsdk9的頭文件搜索順序在platformsdk之前。而在dxsdk9中也有basetsd.h頭文件,而該文件無POINTER_64的定義,因此編譯通不過。調整頭文件搜索順序后,編譯就無問題了。
總結
以上是生活随笔為你收集整理的程序编译出错,缺少类型说明符;语法错误 : 缺少“;”(在标识符“PVOID64”的前面)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.6 字符串的比较
- 下一篇: 1.7 时间延时器和类的别名