Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л_1_Введение_в_С++.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
470.02 Кб
Скачать

Структура текстового файла программы

Текст программы может быть размещен в одном или нескольких текстовых файлах (модулях). Модули взаимодействуют друг с другом посредством вызовов функций, которые они содержат, доступа к глобальным переменным, определениям типов и константам. Важным элементом проектирования программы является возможность раздельной трансляции модулей: файлы компилируются по отдельности и объединяются на этапе компоновки.

В строгой интерпретации, в C/C++ физическим модулем является отдельный сегмент компиляции, т. е. объектный файл. Физическому модулю соответствует файл с исходным текстом C/C++, к которому подключены необходимые заголовочные файлы, образующие интерфейс между модулями. Поэтому часто (с некоторой долей условности) модулем называют также файл с исходным текстом. Язык С и первые реализации языка С++ не предоставляли других механизмов реализации модульности, поэтому физический модуль являлся одновременно и логическим модулем.

Пример структуры текстового файла программы, включающей функции main(), f1() и f2():

//имя файла

//директивы препроцессора

#include <стандартный файл> //подключение стандартных заголовочных файлов

#include ”файл пользователя” //подключение заголовочных файлов пользователя

//определение глобальных переменных

//прототипы функций

void f1(); // прототип функции f1

int f2 (int, char); //прототип функции f2

//определение функции main()

int main () { //заголовок функции

//тело функции (операторы)

// операторы, содержащие вызов функций f1 и f2, например: f1();

// например: cout << f2(4, ‘a’) << endl; выведет то, что вернет вызов функции, т.е. выражение return 0; // завершает тело функции с заголовком int main ()

}

//определение функции f1()

void f1() { //заголовок функции

//тело функции

return; // завершает тело функции с заголовком void f1()

}

//определение функции f2()

int f2 (int k, char c) { //заголовок функции

//тело функции f2

return выражение; // завершает тело функции с заголовком int f1(int k, char c)!!!

}

Если функция main() получает аргументы, то она определяется так:

int main (int argc, char *argv[]) //или int main(int argc, char **argv) { //тело функции

return 0; } где: int argc – число слов, переданное в программу при ее запуске, char *argv[ ] – массив из argc строк; аргумент argv[0] является именем запускаемого на выполнение файла; argv[1] – первое переданное слово; argv[2] – второе переданное слово ….. и т.д.

Стандарт языка С++ требует, чтобы функции были объявлены до первой ссылки на них: их прототипы размещаются в начале программы. Компилятор выполняет строгую проверку числа параметров и соответствия типов в прототипе, в вызове функции и в ее определении, а в ряде случаев выполняет и неявное преобразование типов.

Имена функций – это глобальные имена, видимые по умолчанию из всех файлов одного проекта. Однако прототип функции действует только в пределах одного файла. Из-за этого, в частности, приходиться помещать во все совместно компилируемые файлы директивы препроцессора, связанные с подключением .h-файлов, содержащих прототипы библиотечных функций. Как мы видели, прототипы функций помещаются в заголовочный файл, подключаемый директивой #include к тексту файла программы.