stdafx.cpp   
  d:\vs\vc\platformsdk\include\winnt.h(225)   :   error   C2146:   syntax   error   :   missing   ';'   before   identifier   'PVOID64'   
  d:\vs\vc\platformsdk\include\winnt.h(225)   :   error   C4430:   missing   type   specifier   -   int   assumed.   Note:   C++   does   not   support   default-int   
  d:\vs\vc\platformsdk\include\winnt.h(5943)   :   error   C2146:   syntax   error   :   missing   ';'   before   identifier   'Buffer'   
  d:\vs\vc\platformsdk\include\winnt.h(5943)   :   error   C4430:   missing   type   specifier   -   int   assumed.   Note:   C++   does   not   support   default-int   
  d:\vs\vc\platformsdk\include\winnt.h(5943)   :   error   C4430:   missing   type   specifier   -   int   assumed.   Note:   C++   does   not   support   default-int   
    
    
  从2003迁移到2005,原本正确的工程出现这个,谁能告诉我这个是为什么?如何解决?   

解决方案 »

  1.   

    把错误处的代码贴出来看看,应该是缺少类型定义
    或者是点击一下Bulid框中的错误,按F1 看MSDN帮助
      

  2.   

    程序很大
    typedef struct value_entW {
        LPWSTR  ve_valuename;
        DWORD ve_valuelen;
        DWORD_PTR ve_valueptr;
        DWORD ve_type;
    }VALENTW, FAR *PVALENTW;
    #ifdef UNICODE
    typedef VALENTW VALENT;
    typedef PVALENTW PVALENT;
    #else
    typedef VALENTA VALENT;
    typedef PVALENTA PVALENT;
    #endif // UNICODE#endif // not(_PROVIDER_STRUCTS_DEFINED)
    /*INC*/#endif /* WINVER >= 0x0400 *///
    // Default values for parameters that do not exist in the Win 3.1
    // compatible APIs.
    //#define WIN31_CLASS                 NULL//
    // API Prototypes.
    //
    WINADVAPI
    LONG
    APIENTRY
    RegCloseKey (IN HKEY hKey );WINADVAPI
    LONG
    APIENTRY
    RegOverridePredefKey (
        IN HKEY hKey,
        IN HKEY hNewHKey
        );WINADVAPI
    LONG
    APIENTRY
    RegOpenUserClassesRoot(
        HANDLE hToken,
        DWORD  dwOptions,
        REGSAM samDesired,
        PHKEY  phkResult
        );WINADVAPI
    LONG
    APIENTRY
    RegOpenCurrentUser(
        REGSAM samDesired,
        PHKEY phkResult
        );WINADVAPI
    LONG
    APIENTRY
    RegDisablePredefinedCache(
        );WINADVAPI
    LONG
    APIENTRY
    RegConnectRegistryA (
        IN LPCSTR lpMachineName,
        IN HKEY hKey,
        OUT PHKEY phkResult
        );
    WINADVAPI
    LONG
    APIENTRY
    RegConnectRegistryW (
        IN LPCWSTR lpMachineName,
        IN HKEY hKey,
        OUT PHKEY phkResult
        );
    #ifdef UNICODE
    #define RegConnectRegistry  RegConnectRegistryW
    #else
    #define RegConnectRegistry  RegConnectRegistryA
    #endif // !UNICODEWINADVAPI
    LONG
    APIENTRY
    RegCreateKeyA (
        IN HKEY hKey,
        IN LPCSTR lpSubKey,
        OUT PHKEY phkResult
        );
    WINADVAPI
    LONG
    APIENTRY
    RegCreateKeyW (
        IN HKEY hKey,
        IN LPCWSTR lpSubKey,
        OUT PHKEY phkResult
        );
    #ifdef UNICODE
    #define RegCreateKey  RegCreateKeyW
    #else
    #define RegCreateKey  RegCreateKeyA
    #endif // !UNICODE错误是:
    F:\WINDDK\2600.1106\INC\WXP\winreg.h(107) : error C2146: syntax error : missing ';' before identifier 've_valueptr'
    F:\WINDDK\2600.1106\INC\WXP\winreg.h(107) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    F:\WINDDK\2600.1106\INC\WXP\winreg.h(107) : error C2501: 've_valueptr' : missing storage-class or type specifiers
    F:\WINDDK\2600.1106\INC\WXP\winreg.h(113) : error C2146: syntax error : missing ';' before identifier 've_valueptr'
    F:\WINDDK\2600.1106\INC\WXP\winreg.h(113) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    F:\WINDDK\2600.1106\INC\WXP\winreg.h(113) : error C2501: 've_valueptr' : missing storage-class or type specifiers
    F:\WINDDK\2600.1106\INC\WXP\winreg.h(144) : error C2065: 'HKEY' : undeclared identifier
    F:\WINDDK\2600.1106\INC\WXP\winreg.h(144) : error C2146: syntax error : missing ')' before identifier 'hKey'F:\WINDDK\2600.1106\INC\WXP\winreg.h(556) : fatal error C1003: error count exceeds 100; stopping compilation
    执行 cl.exe 时出错.usbhost.exe - 1 error(s), 0 warning(s)
      

  3.   

    调整C++包含目录,把DDK的WINDDK\2600.1106\INC\WXP目录放到最后,或去除此路径。