2012-01-23 5 views
1

При попытке скомпилировать следующийсоиЬ в Visual Studio 2010

#include <iostream> 

using namespace std; 

#include "stdafx.h" // This was included by Visual Studio 


int _tmain(int argc, _TCHAR* argv[]) // The name _tmain was generated by Visual Studio 
{ 
    int a = 1; 
    cout << a << "\n"; 
    return 0; 
} 

Я получаю сообщение компилятора:

warning C4627: '#include <iostream>': skipped when looking for precompiled header use 
       Add directive to 'StdAfx.h' or rebuild precompiled header 

Тогда я сказал, что cout не определено. (Это не помогает написать std::cout.)

Я использую проекты Visual Studio по умолчанию. Это первый раз, когда я использовал это. Предложения оценены.

ответ

2

Включите ваш объект iostream и декларацию пространства имен std после Включите stdafx.h. Затем программа будет компилироваться и запускаться.

Что касается причин, то я предполагаю, что прекомпилированные заголовки (включенные по умолчанию) зависят от точной последовательности директив #include. Первое включение iostream означает, что PCH для stdafx больше не совпадает с фактической последовательностью объявлений, известных компилятору в этой точке.

+0

Спасибо. Включение #include «stdafx.h» сначала устранило проблему. Другой вопрос. Есть ли способ заставить вывод появляться в одной из подокнов Visual Basic (как в eclipse), а не в окне CommandPrompt? И, наконец, как вы можете запустить программу? Все, что я мог видеть, что вариант run-to-cursor в правом всплывающем меню. Должен быть способ просто сказать бег. – RussAbbott

+0

Вы сделали проект командной строки, поэтому он запускается в окне командной строки. Я понятия не имею, что вы подразумеваете под «Visual Basic subwindow». Для запуска программы просто нажмите F5 или Ctrl + F5 - см. Меню Debug в Visual Studio. –

4
#include "stdafx.h" 
#include <iostream> 
using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int a=10; 
    cout << a << "\n"; 
    cin>>a; 
    return 0; 
} 

Шлем дорогой! Я написал тот же код, но меняю только порядок первых трех строк. Он дает результат на консоли без каких-либо ошибок или предупреждений. Пожалуйста, проверь это.