zoukankan      html  css  js  c++  java
  • Visual studio 之常见编译错误(1):syntax error : missing ';' before identifier 'PVOID64'

    来自博客:http://blog.csdn.net/chenyusiyuan/article/details/4643313的总结:

         一般可通过调整 DirectShow/Include 在 Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for –> Include Files 中的位置(把它下移到最下面),然后把 Project -> Properties -> Configuration Properties –> C/C++ 中的 Additional Include Directories 里面的内容(../../../../include)删掉,重新编译,PVOID64的错误就会消失,原因如下:

    POINTER_64 是一个宏,在64位编译下起作用,它包含在SDK目录下的BASETSD.H中(Microsoft Visual Studio 8/VC/PlatformSDK/Include/basetsd.h(23):#define POINTER_64 __ptr64),但DXSDK自己也带了一个basetsd.h,里面没有定义POINTER_64,从而导致出错,只需要改变 include files 的优先级即可。

    当然,也可以改写 winnt.h 中的代码,在下面这两行: 
    typedef  void  *PVOID;  
    typedef  void  *POINTER_64  PVOID64; 
    之前增加一行: 
    #define  POINTER_64  __ptr64 
    不过最好不要轻易改写 winnt.h 。

          除了以上方法外还有一种高效的方法,博友 @FlashInSky 提出:“这种做法在vs2010高版本中很难奏效,不如自己在包含头文件之前,写上#define POINTER_64 __ptr64”,此方法同样可以解决该错误,同时也避免修改winnt.h的内容。

  • 相关阅读:
    2021.01.28 Rating赛
    2021.01.23 Rating赛补题报告
    Codeforces Round #104 (Div.2)补题报告
    Codeforces Beta Round #73(Div2)补题报告
    11.28天梯赛补题报告
    11月22日天梯训练补题报告
    11.14补题报告
    CCNA笔记
    Centos上安装mysql配置并授权远程连接部署项目
    web容器(03):Nginx配置负载均衡
  • 原文地址:https://www.cnblogs.com/freshmen/p/4122403.html
Copyright © 2011-2022 走看看