VS2008在io.h文件中编译错误

时间:2013-01-23 11:40:58

标签: c++ visual-studio-2008

我正在尝试在VS2008中构建一个项目但是我遇到了以下错误:

Error   1   error C2143: syntax error : missing ';' before '['
    C:\Program Files\Microsoft Visual Studio 9.0\VC\include\io.h    185 lmlib
.
.
.
Error   7   error C2143: syntax error : missing ';' before 'type'
    C:\Program Files\Microsoft Visual Studio 9.0\VC\include\io.h    192 lmlib

这个项目在VS2005中运行良好,但为什么VS2008无效? 我附上io.h文件,请帮我解决这些错误

 #if _MSC_VER > 1000
    #pragma once
    #endif

    #ifndef _INC_IO
    #define _INC_IO

    #include <crtdefs.h>

    #ifdef  _MSC_VER
    /*
     * Currently, all MS C compilers for Win32 platforms default to 8 byte
     * alignment.
     */
    #pragma pack(push,_CRT_PACKING)
    #endif  /* _MSC_VER */

    #ifndef _POSIX_

    #ifdef  __cplusplus
    extern "C" {
    #endif

    #ifndef _FSIZE_T_DEFINED
    typedef unsigned long _fsize_t; /* Could be 64 bits for Win32 */
    #define _FSIZE_T_DEFINED
    #endif

    #ifndef _FINDDATA_T_DEFINED

    struct _finddata32_t {
        unsigned    attrib;
        __time32_t  time_create;    /* -1 for FAT file systems */
        __time32_t  time_access;    /* -1 for FAT file systems */
        __time32_t  time_write;
        _fsize_t    size;
        char        name[260];
    };

    struct _finddata32i64_t {
        unsigned    attrib;
        __time32_t  time_create;    /* -1 for FAT file systems */
        __time32_t  time_access;    /* -1 for FAT file systems */
        __time32_t  time_write;
        __int64     size;
        char        name[260];
    };

    struct _finddata64i32_t {
        unsigned    attrib;
        __time64_t  time_create;    /* -1 for FAT file systems */
        __time64_t  time_access;    /* -1 for FAT file systems */
        __time64_t  time_write;
        _fsize_t    size;
        char        name[260];
    };

    struct __finddata64_t {
        unsigned    attrib;
        __time64_t  time_create;    /* -1 for FAT file systems */
        __time64_t  time_access;    /* -1 for FAT file systems */
        __time64_t  time_write;
        __int64     size;
        char        name[260];
    };

    #ifdef _USE_32BIT_TIME_T
    #define _finddata_t     _finddata32_t
    #define _finddatai64_t  _finddata32i64_t

    #define _findfirst      _findfirst32
    #define _findnext       _findnext32
    #define _findfirsti64   _findfirst32i64
    #define _findnexti64     _findnext32i64

    #else
    #define _finddata_t     _finddata64i32_t
    #define _finddatai64_t  __finddata64_t

    #define _findfirst      _findfirst64i32
    #define _findnext       _findnext64i32
    #define _findfirsti64   _findfirst64
    #define _findnexti64    _findnext64

    #endif


    #define _FINDDATA_T_DEFINED
    #endif

    #ifndef _WFINDDATA_T_DEFINED

    struct _wfinddata32_t {
        unsigned    attrib;
        __time32_t  time_create;    /* -1 for FAT file systems */
        __time32_t  time_access;    /* -1 for FAT file systems */
        __time32_t  time_write;
        _fsize_t    size;
        wchar_t     name[260];
    };

    struct _wfinddata32i64_t {
        unsigned    attrib;
        __time32_t  time_create;    /* -1 for FAT file systems */
        __time32_t  time_access;    /* -1 for FAT file systems */
        __time32_t  time_write;
        __int64     size;
        wchar_t     name[260];
    };

    struct _wfinddata64i32_t {
        unsigned    attrib;
        __time64_t  time_create;    /* -1 for FAT file systems */
        __time64_t  time_access;    /* -1 for FAT file systems */
        __time64_t  time_write;
        _fsize_t    size;
        wchar_t     name[260];
    };

    struct _wfinddata64_t {
        unsigned    attrib;
        __time64_t  time_create;    /* -1 for FAT file systems */
        __time64_t  time_access;    /* -1 for FAT file systems */
        __time64_t  time_write;
        __int64     size;
        wchar_t     name[260];
    };

    #ifdef _USE_32BIT_TIME_T
    #define _wfinddata_t    _wfinddata32_t
    #define _wfinddatai64_t _wfinddata32i64_t

    #define _wfindfirst     _wfindfirst32
    #define _wfindnext      _wfindnext32
    #define _wfindfirsti64  _wfindfirst32i64
    #define _wfindnexti64   _wfindnext32i64

    #else                  
    #define _wfinddata_t    _wfinddata64i32_t
    #define _wfinddatai64_t _wfinddata64_t

    #define _wfindfirst     _wfindfirst64i32
    #define _wfindnext      _wfindnext64i32
    #define _wfindfirsti64  _wfindfirst64
    #define _wfindnexti64   _wfindnext64

    #endif

    #define _WFINDDATA_T_DEFINED
    #endif

    /* File attribute constants for _findfirst() */

    #define _A_NORMAL       0x00    /* Normal file - No read/write restrictions */
    #define _A_RDONLY       0x01    /* Read only file */
    #define _A_HIDDEN       0x02    /* Hidden file */
    #define _A_SYSTEM       0x04    /* System file */
    #define _A_SUBDIR       0x10    /* Subdirectory */
    #define _A_ARCH         0x20    /* Archive file */

    /* function prototypes */

    #ifndef _SIZE_T_DEFINED
    #ifdef  _WIN64
    typedef unsigned __int64    size_t;
    #else
    typedef _W64 unsigned int   size_t;
    #endif
    #define _SIZE_T_DEFINED
    #endif
    //from this line onwards i got errors//
    _Check_return_ _CRTIMP int __cdecl _access(_In_z_ const char * _Filename, _In_ int      _AccessMode);
    _Check_return_wat_ _CRTIMP errno_t __cdecl _access_s(_In_z_ const char * _Filename,     _In_ int _AccessMode);
    _Check_return_ _CRTIMP int __cdecl _chmod(_In_z_ const char * _Filename, _In_ int   _Mode);
    /* note that the newly added _chsize_s takes a 64 bit value */
    _Check_return_ _CRTIMP int __cdecl _chsize(_In_ int _FileHandle, _In_ long _Size);
    _Check_return_wat_ _CRTIMP errno_t __cdecl _chsize_s(_In_ int _FileHandle,_In_ __int64   _Size);
    _Check_return_opt_ _CRTIMP int __cdecl _close(_In_ int _FileHandle);
    _Check_return_opt_ _CRTIMP int __cdecl _commit(_In_ int _FileHandle);
    _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) _CRTIMP int __cdecl _creat(_In_z_   const char * _Filename, _In_ int _PermissionMode);
    _Check_return_ _CRTIMP int __cdecl _dup(_In_ int _FileHandle);
    _Check_return_ _CRTIMP int __cdecl _dup2(_In_ int _FileHandleSrc, _In_ int  _FileHandleDst);
    _Check_return_ _CRTIMP int __cdecl _eof(_In_ int _FileHandle);
    _Check_return_ _CRTIMP long __cdecl _filelength(_In_ int _FileHandle);
    _Check_return_ _CRTIMP intptr_t __cdecl _findfirst32(_In_z_ const char * _Filename,   _Out_ struct _finddata32_t * _FindData);
    _Check_return_ _CRTIMP int __cdecl _findnext32(_In_ intptr_t _FindHandle, _Out_ struct   _finddata32_t * _FindData);
    _Check_return_opt_ _CRTIMP int __cdecl _findclose(_In_ intptr_t _FindHandle);
    _Check_return_ _CRTIMP int __cdecl _isatty(_In_ int _FileHandle);
    _CRTIMP int __cdecl _locking(_In_ int _FileHandle, _In_ int _LockMode, _In_ long   _NumOfBytes);
    _Check_return_opt_ _CRTIMP long __cdecl _lseek(_In_ int _FileHandle, _In_ long _Offset, _In_ int _Origin);
    _Check_return_wat_ _CRTIMP errno_t __cdecl _mktemp_s(_Inout_z_cap_(_Size) char * _TemplateName, _In_ size_t _Size);
   __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _mktemp_s, _Deref_prepost_z_ char,  _TemplateName)
    _Check_return_ __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(char *, __RETURN_POLICY_DST,  _CRTIMP, _mktemp, _Inout_z_, char, _TemplateName)
    _Check_return_ _CRTIMP int __cdecl _pipe(_Inout_cap_c_(2) int * _PtHandles, _In_  unsigned int _PipeSize, _In_ int _TextMode);
    _Check_return_ _CRTIMP int __cdecl _read(_In_ int _FileHandle, _Out_bytecap_(_MaxCharCount) void * _DstBuf, _In_ unsigned int _MaxCharCount);

    #ifndef _CRT_DIRECTORY_DEFINED
    #define _CRT_DIRECTORY_DEFINED
    _Check_return_ _CRTIMP int __cdecl remove(_In_z_ const char * _Filename);
    _Check_return_ _CRTIMP int __cdecl rename(_In_z_ const char * _OldFilename, _In_z_   const char * _NewFilename);
    _Check_return_ _CRTIMP int __cdecl _unlink(_In_z_ const char * _Filename);
    #if !__STDC__
    _Check_return_ _CRT_NONSTDC_DEPRECATE(_unlink) _CRTIMP int __cdecl unlink(_In_z_ const  char * _Filename);
    #endif
    #endif

    _Check_return_ _CRTIMP int __cdecl _setmode(_In_ int _FileHandle, _In_ int _Mode);
    _Check_return_ _CRTIMP long __cdecl _tell(_In_ int _FileHandle);
    _CRT_INSECURE_DEPRECATE(_umask_s) _CRTIMP int __cdecl _umask(_In_ int _Mode);
    _Check_return_wat_ _CRTIMP errno_t __cdecl _umask_s(_In_ int _NewMode, _Out_ int *   _OldMode);
    _CRTIMP int __cdecl _write(_In_ int _FileHandle, _In_bytecount_(_MaxCharCount) const       void * _Buf, _In_ unsigned int _MaxCharCount);

    _Check_return_ _CRTIMP __int64 __cdecl _filelengthi64(_In_ int _FileHandle);
    _Check_return_ _CRTIMP intptr_t __cdecl _findfirst32i64(_In_z_ const char * _Filename,     _Out_ struct _finddata32i64_t * _FindData);
    _Check_return_ _CRTIMP intptr_t __cdecl _findfirst64i32(_In_z_ const char * _Filename,   _Out_ struct _finddata64i32_t * _FindData);
    _Check_return_ _CRTIMP intptr_t __cdecl _findfirst64(_In_z_ const char * _Filename,   _Out_ struct __finddata64_t * _FindData);
    _Check_return_ _CRTIMP int __cdecl _findnext32i64(_In_ intptr_t _FindHandle, _Out_  struct _finddata32i64_t * _FindData);
    _Check_return_ _CRTIMP int __cdecl _findnext64i32(_In_ intptr_t _FindHandle, _Out_   struct _finddata64i32_t * _FindData);
    _Check_return_ _CRTIMP int __cdecl _findnext64(_In_ intptr_t _FindHandle, _Out_ struct  __finddata64_t * _FindData);
    _Check_return_opt_ _CRTIMP __int64 __cdecl _lseeki64(_In_ int _FileHandle, _In_ __int64  _Offset, _In_ int _Origin);
    _Check_return_ _CRTIMP __int64 __cdecl _telli64(_In_ int _FileHandle);

    _Check_return_wat_ _CRTIMP errno_t __cdecl _sopen_s(_Out_ int * _FileHandle, _In_z_  const char * _Filename,_In_ int _OpenFlag, _In_ int _ShareFlag, _In_ int _PermissionMode);

    #if !defined(__cplusplus)
    _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) _CRTIMP int __cdecl _open(_In_z_ const  char * _Filename, _In_ int _OpenFlag, ...);
    _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) _CRTIMP int __cdecl _sopen(_In_z_  const char * _Filename, _In_ int _OpenFlag, int _ShareFlag, ...);
    #else

    /* these function do not validate pmode; use _sopen_s */
    extern "C++" _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) _CRTIMP int __cdecl   _open(_In_z_ const char * _Filename, _In_ int _Openflag, _In_ int _PermissionMode = 0);
    extern "C++" _Check_return_ _CRT_INSECURE_DEPRECATE(_sopen_s) _CRTIMP int __cdecl   _sopen(_In_z_ const char * _Filename, _In_ int _Openflag, _In_ int _ShareFlag, _In_ int   _PermissionMode = 0);

    #endif

    #ifndef _WIO_DEFINED

    /* wide function prototypes, also declared in wchar.h  */

    _Check_return_ _CRTIMP int __cdecl _waccess(_In_z_ const wchar_t * _Filename, _In_ int  _AccessMode);
    _Check_return_wat_ _CRTIMP errno_t __cdecl _waccess_s(_In_z_ const wchar_t * _Filename, _In_ int _AccessMode);
    _Check_return_ _CRTIMP int __cdecl _wchmod(_In_z_ const wchar_t * _Filename, _In_ int _Mode);
    _Check_return_ _CRT_INSECURE_DEPRECATE(_wsopen_s) _CRTIMP int __cdecl _wcreat(_In_z_ const wchar_t * _Filename, _In_ int _PermissionMode);
    _Check_return_ _CRTIMP intptr_t __cdecl _wfindfirst32(_In_z_ const wchar_t * _Filename,  _Out_ struct _wfinddata32_t * _FindData);
    _Check_return_ _CRTIMP int __cdecl _wfindnext32(_In_ intptr_t _FindHandle, _Out_ struct  _wfinddata32_t * _FindData);
    _Check_return_ _CRTIMP int __cdecl _wunlink(_In_z_ const wchar_t * _Filename);
    _Check_return_ _CRTIMP int __cdecl _wrename(_In_z_ const wchar_t * _OldFilename, _In_z_  const wchar_t * _NewFilename);
    _CRTIMP errno_t __cdecl _wmktemp_s(_Inout_z_cap_(_SizeInWords) wchar_t * _TemplateName,  _In_ size_t _SizeInWords);
    __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(errno_t, _wmktemp_s, _Deref_prepost_z_ wchar_t,  _TemplateName)
   __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(wchar_t *, __RETURN_POLICY_DST, _CRTIMP,  _wmktemp, _Inout_z_, wchar_t, _TemplateName)

    _Check_return_ _CRTIMP intptr_t __cdecl _wfindfirst32i64(_In_z_ const wchar_t *   _Filename, _Out_ struct _wfinddata32i64_t * _FindData);
    _Check_return_ _CRTIMP intptr_t __cdecl _wfindfirst64i32(_In_z_ const wchar_t * _Filename, _Out_ struct _wfinddata64i32_t * _FindData);
    _Check_return_ _CRTIMP intptr_t __cdecl _wfindfirst64(_In_z_ const wchar_t * _Filename,  _Out_ struct _wfinddata64_t * _FindData);
    _Check_return_ _CRTIMP int __cdecl _wfindnext32i64(_In_ intptr_t _FindHandle, _Out_  struct _wfinddata32i64_t * _FindData);
    _Check_return_ _CRTIMP int __cdecl _wfindnext64i32(_In_ intptr_t _FindHandle, _Out_  struct _wfinddata64i32_t * _FindData);
    _Check_return_ _CRTIMP int __cdecl _wfindnext64(_In_ intptr_t _FindHandle, _Out_ struct  _wfinddata64_t * _FindData);

    _Check_return_wat_ _CRTIMP errno_t __cdecl _wsopen_s(_Out_ int * _FileHandle, _In_z_  const wchar_t * _Filename, _In_ int _OpenFlag, _In_ int _ShareFlag, _In_ int _PermissionFlag);

    #if !defined(__cplusplus) || !defined(_M_IX86)

    _Check_return_ _CRT_INSECURE_DEPRECATE(_wsopen_s) _CRTIMP int __cdecl _wopen(_In_z_  const wchar_t * _Filename, _In_ int _OpenFlag, ...);
    _Check_return_ _CRT_INSECURE_DEPRECATE(_wsopen_s) _CRTIMP int __cdecl _wsopen(_In_z_   const wchar_t * _Filename, _In_ int _OpenFlag, int _ShareFlag, ...);

    #else

    /* these function do not validate pmode; use _sopen_s */
    extern "C++" _CRT_INSECURE_DEPRECATE(_wsopen_s) _CRTIMP int __cdecl _wopen(_In_z_ const  wchar_t * _Filename, _In_ int _OpenFlag, _In_ int _PermissionMode = 0);
    extern "C++" _CRT_INSECURE_DEPRECATE(_wsopen_s) _CRTIMP int __cdecl _wsopen(_In_z_  const wchar_t * _Filename, _In_ int _OpenFlag, _In_ int _ShareFlag, int _PermissionMode =  0);

    #endif

    #define _WIO_DEFINED
    #endif

    int  __cdecl __lock_fhandle(_In_ int _Filehandle);
    void __cdecl _unlock_fhandle(_In_ int _Filehandle);

2 个答案:

答案 0 :(得分:1)

很难说没有一些代码可以工作,也许你在一个标题中的一个类声明结束后错过了一个分号,然后当io.h被包含在内时它会抱怨它。在黑暗中刺伤我很抱歉。

答案 1 :(得分:-2)

您可能需要下载以前称为Platform SDK的较新的Windows SDK。

编辑:详细说明在迁移到较新的vc2008时存在一些差异。当我从vc2005转到vc2008时,我有一些问题已得到纠正,更新后的sdk已经解决了。我没有说标准标题中存在错误,只是旧版SDK与vc2008中的标题之间存在不匹配。在没有看到更多代码的情况下很难说,但是你不能将其作为OP所说的潜在解决方案来消除。

我还应该为OP添加更新到新SDK仍然可以在vc2005中正常运行,你可能需要运行“Windows SDK配置工具”来在Visual Studio中设置更新的SDK如果你是需要尝试这个。