Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C. Тема 2. Раздел 2

.pdf
Скачиваний:
16
Добавлен:
21.03.2016
Размер:
389.12 Кб
Скачать

Тема 2. Профессиональное программирование. Раздел 2. Проекты и исходный код

Разделение исходного кода на файлы

Include guard

Часть 1

Большие программы неудобно разрабатывать на основе единственного файла исходного кода

В состав языка Си входит стандартная библиотека, состоящая из множества файлов

Последовательность сборки выполняемого файла

Файлы исходного кода

Файлы объектного кода (по одному файлу объектного кода на файл исходного кода)

Сборка файлов объектного кода в выполняемый файл

Редактирование связей

Вывод

Каждый файл исходного кода компилируется по

отдельности

Среда разработки содержит проект, в котором указано, какие существуют файлы исходного кода

В каждый файл исходного кода следует включать нужные макроопределения, типы данных и объявления используемых функций, размещённых в других файлах

Решение проблемы

Использование заголовочных файлов

Заголовочные файлы имеют расширение *.h

Файл one.h

extern int some_function( int i );

Файл two.h

#include "one.h"

Файл program.c

#include "one.h"

#include "two.h"

Результат обработки файла program.c препроцессором extern int some_function( int i ); extern int some_function( int i );

Получаем ошибку компиляции

Решение проблемы - Include guard

Часть 2

Файл one.h

#ifndef ONE_H #define ONE_H

extern int some_function( int i );

#endif /* ONE_H */

Файл two.h

#ifndef TWO_H #define TWO_H

#include "one.h"

#endif /* TWO_H */

Файл one.h

#ifndef ONE_H #define ONE_H

extern int some_function( int i );

#endif /* ONE_H */

Файл two.h – забыли заменить имя макроса

#ifndef ONE_H #define ONE_H

#include "one.h"

#endif /* ONE_H */

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]