• Тип возвращаемого значения, в этой функции — тип
int
(т.е. целое число), определяет, какой результат возвращает функция в точку вызова (если она возвращает какое-нибудь значение). Слово
int
является зарезервированным в языке С++ (
ключевым словом), поэтому его нельзя использовать как имя чего-нибудь еще (см. раздел А.3.1).
• Имя, в данном случае
main
.
• Список параметров, заключенный в круглые скобки (см. разделы 8.2 и 8.6); в данном случае список параметров пуст.
• Тело функции, заключенное в фигурные скобки и перечисляющее действия (называемые инструкциями), которые функция должна выполнить.
Отсюда следует, что минимальная программа на языке С++ выглядит так:
int main() { }
Пользы от этой программы мало, так как она ничего не делает. Тело функции
main
программы “Hello, World!” содержит две инструкции:
cout << "Hello, World!\n"; // вывод "Hello, World!"
return 0;
Во-первых, она выводит на экран строку
Hello, World!
, а затем возвращает значение
0
(нуль) в точку вызова. Поскольку функция
main()
вызывается системой, мы не будем использовать возвращаемое значение. Однако в некоторых системах (в частности, Unix/Linux) это значение можно использовать для проверки успешности выполнения программы. Нуль (
0
), возвращаемый функцией
main()
, означает, что программа выполнена успешно.
Часть программы на языке С++, определяющая действие и не являющаяся директивой
#include
(или другой директивой препроцессора; см. разделы 4.4 и А.17), называется
инструкцией.
2.3. Компиляция
С++ — компилируемый язык. Это значит, что для запуска программы сначала необходимо транслировать ее из текстовой формы, понятной для человека, в форму, понятную для машины. Эту задачу выполняет особая программа, которая называется компилятором. То, что вы пишете и читаете, называется исходным кодом, или текстом программы, а то, что выполняет компьютер, называется выполняемым, объектным, или машинным кодом. Обычно файлы с исходным кодом программы на языке С++ имеют расширение
.cpp
(например,
hello_world.cpp
) или
.h
(например,
std_lib_facilities.h
), а файлы с объектным кодом имеют расширение
.obj
(в системе Windows) или
.o
(в системе Unix). Следовательно, простое слово
код является двусмысленным и может ввести в заблуждение; его следует употреблять с осторожностью и только в ситуациях, когда недоразумение возникнуть не может. Если не указано иное, под словом
код подразумевается исходный код или даже исходный код, за исключением комментариев, поскольку комментарии предназначены для людей и компилятор не переводит их в объектный код.
Компилятор читает исходный код и пытается понять, что вы написали. Он проверяет, является ли программа грамматически корректной, определен ли смысл каждого слова. Обнаружив ошибку, компилятор сообщает о ней, не пытаясь выполнить программу. Компиляторы довольно придирчивы к синтаксису. Пропуск какой-нибудь детали, например директивы
#include
, двоеточия или фигурной скобки, приводит к ошибке. Кроме того, компилятор точно так же абсолютно нетерпим к опечаткам. Продемонстрируем это рядом примеров, в каждом из которых сделана небольшая ошибка. Каждая из этих ошибок является довольно типичной.
// пропущен заголовочный файл
int main()
{
cout << "Hello, World!\n";
return 0;
}
Мы не сообщили компилятору о том, что представляет собой объект, поэтому он сообщает об ошибке. Для того чтобы исправить программу, следует добавить директиву
#include
.
#include "std_facilities.h"
int main()
{
cout << "Hello, World!\n";
return 0;
}
К сожалению, компилятор снова сообщает об ошибке, так как мы сделали опечатку в строке
std_lib_facilities.h
. Компилятор заметил это.
#include "std_lib_facilities.h
int main()
{
cout << "Hello, World!\n;
return 0;
}
В этом примере мы пропустили закрывающую двойную кавычку (
"
). Компилятор указывает нам на это.
#include "std_lib_facilities.h"
integer main()
{
cout << "Hello, World!\n";
return 0;
}
Теперь мы вместо ключевого слова
<b>int</b>
использовали слово
<b>integer</b>
, которого в языке С++ нет. Компилятор таких ошибок не прощает.
#include "std_lib_facilities.h"
int main()
{
cout < "Hello, World!\n";
return 0;
}
Здесь вместо символов
<<
(оператор вывода) использован символ
<
(оператор “меньше”). Компилятор это заметил.
#include "std_lib_facilities.h"