$ a.out
Если бы необходимо было указать расположение файла, мы использовали бы точку (.
) с последующей косой чертой, означающие, что наш исполняемый файл находится в текущем каталоге:
$ ./a.out
Способ доступа к значению, возвращаемому из функции main()
, зависит от используемой операционной системы. В обеих операционных системах (UNIX и Windows) после выполнения программы можно ввести команду echo
с соответствующим параметром.
На UNIX для выяснения состояния выполненной программы применяется следующая команда:
$ echo $?
В операционной системе Windows для этого применяется команда
$ echo %ERRORLEVEL%
Конкретная команда, используемая для вызова компилятора С++, зависит от применяемой операционной системы и версии компилятора. Наибольшее распространение получили компилятор GNU и компилятор С++ из комплекта Microsoft Visual Studio. По умолчанию для вызова компилятора GNU используется команда g++
:
$ g++ -о prog1 prog1.cc
где $
— это системное приглашение к вводу; -о prog1
— аргумент компилятора и имя получаемого исполняемого файла. Данная команда создает исполняемый файл по имени prog1
или prog1.exe
, в зависимости от операционной системы. На операционной системе UNIX исполняемые файлы не имеют расширения, а в операционной системе Windows они имеют расширение .exe
. Если пропустить аргумент -о prog1
, то компилятор создаст исполняемый файл по имени a.out
(на системе UNIX) или a.exe
(на Windows). (Примечание: в зависимости от используемого выпуска компилятора GNU, возможно, понадобится добавить аргумент -std=c++0x
, чтобы включить поддержку С++ 11.)
Для вызова компилятора Microsoft Visual Studio 2010 используется команда c1
:
С:\Users\me\Programs> cl /EHsc prog1.cpp
где C:\Users\me\Programs>
— это системное приглашение к вводу; \Users\me\Programs
— имя текущего каталога (или папки). Команда cl
запускает компилятор, а параметр компилятора /EHsc
включает стандартную обработку исключений. Компилятор Microsoft автоматически создает исполняемый файл с именем, которое соответствует первому имени файла исходного кода. У исполняемого файла будет суффикс .exe
и то же имя, что и у файла исходного кода. В данном случае исполняемый файл получит имя prog1.exe
.
Как правило, компиляторы способны предупреждать о проблемных конструкциях. Обычно эти возможности имеет смысл задействовать. Поэтому с компилятором GNU желательно использовать параметр -Wall
, а с компиляторами Microsoft — параметр /W4
.
Более подробная информация по этой теме содержится в руководстве программиста, прилагаемом к компилятору.
Упражнение 1.1. Просмотрите документацию по используемому компилятору и выясните, какое соглашение об именовании файлов он использует. Откомпилируйте и запустите на выполнение программу, функция main()
которой приведена в разд. 1.1.
Упражнение 1.2. Измените код программы так, чтобы функция main()
возвращала значение -1
. Возвращение значения -1
зачастую свидетельствует о сбое при выполнении программы. Перекомпилируйте и повторно запустите программу, чтобы увидеть, как используемая операционная система реагирует на свидетельство об отказе функции main()
.
1.2. Первый взгляд на ввод-вывод
В самом языке С++ никаких операторов для ввода и вывода (Input/Output — IO) нет. Их предоставляет стандартная библиотека (standard library) наряду с обширным набором подобных средств. Однако для большинства задач, включая примеры этой книги, вполне достаточно изучить лишь несколько фундаментальных концепций и простых операций.
В большинстве примеров этой книги использована библиотека iostream
. Ее основу составляют два типа, istream
и ostream
, которые представляют потоки ввода и вывода соответственно. Поток (stream) — это последовательность символов, записываемая или читаемая из устройства ввода-вывода некоторым способом. Термин "поток" подразумевает, что символы поступают и передаются последовательно на протяжении определенного времени.