Очень таинственный / случайный C ++ WDK STL 7 Ошибка: iosfwd (202): ошибка C2144: синтаксическая ошибка - PullRequest
1 голос
/ 13 мая 2011

У меня есть следующий тривиальный файл с именем Temp.cpp:

#include <string>
int main() { return 0; }

и я пытаюсь скомпилировать его с помощью следующей командной строки в среде бесплатной сборки Windows XP с использованием WDK 7.1:

cl.exe /Iinc\api\crt\stl70 /Iinc\crt C:\Temp.cpp

и я получаю действительно случайные ошибки, такие как:

Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.207 for 80x86

C:\WinDDK\7600.16385.1\inc\api\crt\stl70\iosfwd(202) :
    error C2144: syntax error : 'int' should be preceded by ';'

Ошибка исчезнет, ​​если я использую stl60 вместо stl70, но это не решает проблему.

В чем причина проблемы?


Обновление: Я попытался снова удалить и установить WDK, но ничего не изменилось. (


Обновление 2: Хорошо, очевидно, ошибка выкрикивает в самом файле заголовка: _SCL_INSECURE_DEPRECATE является причиной. Кто-нибудь знает, как правильно отключить ? (Если я просто закомментирую строки, я получу намного больше ошибок, связанных с кучей других макросов.)

Ответы [ 3 ]

3 голосов
/ 13 мая 2011

Сам нашел ответ, изменив заголовки и угадай:

Мне нужно определить _STL70_.

0 голосов
/ 13 мая 2011

очевидно, что ошибка выкрикивается в самом заголовочном файле: _SCL_INSECURE_DEPRECATE является причиной. Кто-нибудь знает, как правильно его выключить?

Если у вас проблемы с _SCL_INSECURE_DEPRECATE, попробуйте установить:

/D_SCL_SECURE_NO_DEPRECATE

Но, с учетом того, что вы видите сообщение об ошибке, звучит так, как будто вы компилируете заголовки с помощью компилятора, который старше, чем поддержка заголовков (так что в любом случае это может вас не завести).

0 голосов
/ 13 мая 2011

Что cl.exe вы берете? Если на вашем пути установлен более старый (VC6) компилятор, чем WDK, вы можете ожидать этих ошибок. VC6 не может скомпилировать STL, поставляемый с VC7

...