Ошибки компиляции с stdio.h в VC ++ 2008 - PullRequest
1 голос
/ 19 августа 2011

У меня есть несколько проектов, созданных в VC ++ 2008.
Однако при попытке создать каждый из них я получаю следующую ошибку:

1>Compiling...
1>main.cpp
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(413) : error C2061: syntax error : identifier '_In_kpt_'
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(413) : error C2143: syntax error : missing ')' before ';'
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(414) : error C2337: 'In_' : attribute not found
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(414) : error C2146: syntax error : missing ']' before identifier 'size_t'
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(414) : error C2061: syntax error : identifier 'size_t'
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(414) : error C2059: syntax error : ')'
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(414) : error C2143: syntax error : missing ')' before ';'
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdio.h(422) : fatal error C1021: invalid preprocessor command 'efdif'

Странно то, чтоя даже не включил 'stdio.h' в любой моего исходного кода.Проблема даже очевидна в простом тесте HelloWorld.

#include <iostream>
using namespace std;

int main(){
    cout << "hello" << endl;
}

Примечание.Эта ошибка появилась только сегодня утром.VC ++ 2008 отлично работал до этого.
Я не вносил никаких системных изменений.Любые идеи были бы хорошы.

Kameel

Редактировать - Строки 411-420 из моего файла stdio.h.

_Check_return_opt_ _CRTIMP int __cdecl _snprintf_c_l(_Out_cap_(_MaxCount) char *    _DstBuf, _In_ size_t _MaxCount, _In_z_ _Printf_format_string_ const char * _Format,      _In_opt_ _locale_t _Locale, ...);
_Check_return_opt_ _CRTIMP_ALTERNATIVE int __cdecl _snprintf_s_l(_Out_z_cap_(_DstSize) char * _DstBuf, _In_ size_t _DstSize, _In_ size_t _MaxCount, _In_z_ _Printf_format_string_ const char * _Format, _In_opt_ _locale_t _Locale, ...);
_Check_return_opt_ _CRT_INSECURE_DEPRECATE(_vsnprintf_s_l) _CRTIMP int __cdecl _vsnprintf_l(_Out_cap_(_MaxCount) char * _DstBuf, _In_ size_t _MaxCount, _In_z_ _Printf_format_string_ const char * _Format, _In_opt_ _locale_t _Locale, va_list _ArgList);
_Check_return_opt_ _CRTIMP int __cdecl _vsnprintf_c_l(_Out_cap_(_MaxCount) char * _DstBuf, _In_ size_t _MaxCount, const char *, _In_kpt_ _locale_t _Locale, va_list _ArgList!;
_Check_return_opt_ _CRTIMP int __cdecl _vsnprintf_s_l(_Out_z_cap_(_DstSize) char * _DstBuf, [In_ size_t _DstSize, _In_ size_t _MaxCount, _In_z_ _Printf_format_string_ const char* _Format,_In_opt_ _locale_p _Locale, va_list _ArgList);

#ifndef _WSTDIO_DEFINED

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

#ifndef WEOF
#define WEOF (wint_t)(0xFBFF)
#efdif

1 Ответ

7 голосов
/ 19 августа 2011

У вас есть поврежденный stdio.h файл.

Токен в строке 413 должен быть _In_opt_, а не _In_kpt_.

И строка 422 должна быть #endif, а не #efdif.

Я бы переустанавливал VS 2008 (может быть, после того, как все тщательно проверил на случай, если ваш жесткий диск вышел из строя или что-то еще), если другие файлы были слегка повреждены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...