Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Текст программы может быть размещен в одном или нескольких текстовых файлах (модулях). Модули взаимодействуют друг с другом посредством вызовов функций, которые они содержат, доступа к глобальным переменным, определениям типов и константам. Важным элементом проектирования программы является возможность раздельной трансляции модулей: файлы компилируются по отдельности и объединяются на этапе компоновки.
В строгой интерпретации, в 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 к тексту файла программы.
Дата публикования: 2014-11-29; Прочитано: 388 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!