Производится чтение и анализ текста программы, и если не обнаружены ошибки, то генерируется код. Затем программа проверяется на наличие имен и операций, которые использовались, но не были определены (в нашем случае это cout и ««). Если это возможно, то программа делается полной посредством дополнения недостающих определений из библиотеки (есть стандартные библиотеки, и пользователи могут создавать свои собственные). В нашем случае cout и «« были описаны в stream.h, то есть, были указаны их типы, но не было дано никаких подробностей относительно их реализации. В стандартной библиотеке содержится спецификация пространства и инициализирующий код для cout и ««. На самом деле, в этой библиотеке содержится и много других вещей, часть из которых описана в stream.h, однако к скомпилированной версии добавляется только подмножество библиотеки, необходимое для того, чтобы сделать нашу программу полной.
Команда компиляции в С++ обычно называется CC. Она используется так же, как команда cc для программ на C, подробности вы можете найти в вашем руководстве. Предположим, что программа с «Hello, world» хранится в файле с именем hello.c, тогда вы можете ее скомпилировать и запустить примерно так ($ – системное приглашение):
$ CC hello.c $ a.out Hello,world $
a.out – это принимаемое по умолчанию имя исполняемого результата компиляции. Если вы хотите назвать свою программу, вы можете сделать это с помощью опции -o:
$ CC hello.c -o hello $ hello Hello,world $
1.1.3 Ввод
Следующая (довольно многословная) программа предлагает вам ввести число дюймов. После того, как вы это сделаете, она напечатает соответствующее число сантиметров.
#include «stream.h»
main() (* int inch = 0; // inch – дюйм cout «„ „inches“; cin “» inch; cout «„ inch; cout «« " in = "; cout «« inch*2.54; cout «« « cm\n“; *)
Первая строка функции main() описывает целую переменную inch. Ее значение считывается с помощью операции »» («взять из») над стандартным потоком ввода cin. Описания cin и »», конечно же, находятся в «stream.h». После ее запуска ваш терминал может выглядеть примерно так:
$ a.out inches=12 12 in = 30.48 cm $
В этом примере на каждую команду вывода приходится один оператор. Это слишком длинно. Операцию вывода «« можно применять к ее собственному результату, так что последние четыре команды вывода можно было записать одним оператором:
cout «„ inch «« " in = " «« inch*2.54 «« « cm\n“;
В последующих разделах ввод и вывод будут описаны гораздо более подробно. Вся эта глава фактически может рассматриваться как объяснение того, как можно написать предыдущие программы на языке, который не обеспечивает операции ввода-вывода. На самом деле, приведенные выше программы написаны на С++, «расширенном» операциями ввода-вывода посредством использования библиотек и включения файлов с помощью #include. Другими словами, язык С++ в том виде, в котором он описан в справочном руководстве, не определяет средств ввода-вывода. Вместо этого исключительно с помощью средств, доступных любому программисту, определены операции «„ и “».
1.2 Комментарии
Часто бывает полезно вставлять в программу текст, который предназначается в качестве комментария только для читающего программу человека и игнорируется компилятором в программе. В С++ это можно сделать одним из двух способов.
Символы /* начинают комментарий, заканчивающийся символами */. Вся эта последовательность символов эквивалентна символу пропуска (например, символу пробела). Это наиболее полезно для многострочных комментариев и изъятия частей программы при редактировании, однако следует помнить, что комментарии /* */ не могут быть вложенными.
Символы // начинают комментарий, который заканчивается в конце строки, на которой они появились. Опять, вся последовательность символов эквивалентна пропуску. Этот способ наиболее полезен для коротких комментариев.