Есть до соплей простой код на С++ (конвертит температуру из Фаренгейта в Цельсия):
//t-convert
#include “IOSTREAM.H” // Header for cout, cin Так неправильно!
#include IOSTREAM (IOSTREAM в вот таких <> скобках)
#include STDLIB.H (STDLIB в вот таких <> скобках )
using namespace std;
void main()
{
int fTemp; //Fahrenheit temp.
cout << "Input Fahrenheit temperature: ";
cin >> fTemp;
int cTemp = (fTemp-32)*5/9; //Celsius temp.
cout << "Celsius temperature is: " << cTemp << " n";
system(“pause”);
}
Компилится. Из Вижуал Студии 6 исполняется с “Press to continue…” в конце. Напрямую в командной строке типа C:bla-blaMyProjectst-convert.exe тоже нормально.
Но при тупом двойном клике на ехе-шник в папке исполняет и схлопывает окно консоли.
system(“PAUSE”) или getch() в конце кода (и соответствующими хидерами #include) не помогают. Точнее они стопают выполнение сразу после исполнения строчки cin >> fTemp;
Гугель не помог.
UPD:
Есть в 6-й студии где-то опция проекта, которая оставляет консольку активной при исполнении экзешника. Точно сказать не могу, отошел от С++, но курить MSDN посоветую
Вот для 2005-й
Для шестерки тоже что-то подобное
Спасибо!
Но в древней 6.0 даже намека нет на таки пространные настройки проекта, а в новой 2008 – есть настройки, но нет искомого поля (к тому же она у меня еще и русская :( )
Ушел курить MSDN.
Есть. Я настраивал в свое время. Ищи в свойствах проекта
system(“pause”); в конце main() обычно помогал, если до него не происходила исключительная ситуация. ещё вариант – попробовать debug и release сборки – одинаково ведут?
Одинаково. Стопают исполнение на пол-пути.
Не знаю, батенька.
Вот, VS2005. Исходник твой:
Собрал exe, ткнул дважды мышкой, ввёл число, получил "Press any key..."
насколько я помню Си чувствителен к регистру, а посему system(“pause”); и system(“PAUSE”); не одно и то же.
эта строка передаётся системе, а винде регистр неважен, хоть pAUSe
Вполне возможно. Я на сях не пишу, и это было просто предположение.
Скопировал у тебя в чистый консольный проект, исправил [ на < у хидеров.
Закомментировал using… т.к. error C2871: ‘std’ : does not exist or is not a namespace. И без него работает.
http://www.ljplus.ru/img4/g/a/gatazo/123.JPG – скриншот.
Верхнее окошко консоли – запуск изз студи по Shift-F5. Требует ввод, просит кнопку, отдает результат, требует кнопку.
Если паузу в коде закомментировать – работает как надо.
Нижнее окошко – даблклик из папки. Требует ввод, просит кнопку, отдает результат и схлопывается.
Если паузу в коде закомментировать – требует ввод, получает циферку, мгновенно все исполняет и схлопывает окно.
У меня вообще мысль, что что-то в самой винде не так :)
Настораживает эта ошибка о пространстве имён… что-то нехорошо явно…
> ‘std’ : does not exist or is not a namespace
У исходного файла расширение .cpp или .c?
а зачем ты изменил IOSTREAM.H?
.cpp
Регистр IOSTREAM изменил на заглавные, т.к. он так же выглядит в папке Include.
но ты ещё и .H добавил – а этого совершенно ненужно делать
Исправил. Ушла ошибка с using… – чувааааак! :) сама включает их в проект. В книжке об этом пишется (в части скобок и кавычек), а вот про .h ничего нет.
Раскомментировал pause.
И все заработало!
Выводы:
1.
2. Внимательнее нужно относится к синтаксису хидеров. Ибо ранее я юзал “iostream.h” и руками добавлял файлик заголовка в Header Files проекта. Тогда как с
Спасибо! :)