Почему этот код не компилируется и не запускается в Visual Studio 2010? - PullRequest
7 голосов
/ 28 апреля 2011

Я пытаюсь настроить Visual Studio 2010 на выполнение простой старой ANSI-компиляции без каких-либо расширений Microsoft.

Я начал с пустого шаблона проекта, так как, похоже, нетпростой шаблон проекта ANSI в 2010 году больше.

Затем я устанавливаю

Свойства -> Свойства конфигурации -> C / C ++ -> Язык -> Отключить расширения = Да (/ Za)

Вот мой код:

#include <iostream>

int main( int argc, const char* argv[] )
{
  std::cout << "Hello World!";
  return 0;
}

Вот ошибки:

1>------ Build started: Project: ansi_test, Configuration: Release Win32 ------
1>Build started 4/27/2011 4:20:00 PM.
1>InitializeBuildStatus:
1>  Touching "Release\ansi_test.unsuccessfulbuild".
1>ClCompile:
1>  Main.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(636): error C3861: 'width': identifier not found
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(636): error C3861: 'width': identifier not found
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(639): error C3861: 'flags': identifier not found
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(643): error C2227: left of '->sputc' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(643): error C2780: 'void std::fill(_FwdIt,_FwdIt,const _Ty &)' : expects 3 arguments - 0 provided
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2712) : see declaration of 'std::fill'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(643): error C3861: 'rdbuf': identifier not found
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(648): error C2227: left of '->sputc' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(648): error C3861: 'rdbuf': identifier not found
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(654): error C2227: left of '->sputc' must point to class/struct/union/generic type
1>          type is ''unknown-type''
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(654): error C2780: 'void std::fill(_FwdIt,_FwdIt,const _Ty &)' : expects 3 arguments - 0 provided
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2712) : see declaration of 'std::fill'
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(654): error C3861: 'rdbuf': identifier not found
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ostream(659): error C3861: 'width': identifier not found
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.63

Как мне получить этот самый базовый код C ++ для чистой компиляции?

Ответы [ 2 ]

5 голосов
/ 28 апреля 2011

Ошибка исчезнет, ​​если вы определите wchar_t как собственный тип .

0 голосов
/ 28 апреля 2011

Если я скопирую ваш код в файл, test.cpp, а затем введите команду

cl /Za /EHsc test.cpp

затем он корректно компилируется без каких-либо предупреждений или ошибок при моей установке Visual C ++ Express 2010. / EHsc необходим для правильной обработки исключений, и я не совсем понимаю, почему это не по умолчанию.

Это отличается от того, что вы делаете?

...