Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование директивы препроцессора #includeСодержание книги
Поиск на нашем сайте
В языке C откомпилировать исходные файлы и собрать из полученных объектных модулей единый загрузочный модуль можно, не используя этих специальных средств. Для этого в текст одного из исходных модулей включаются с помощью директивы #include тексты всех остальных модулей и полученный единый исходный модуль транслируется и компонуется. Пример. /* file3.c */ #include "ext.h" #include "file1.c" #include "file2.c" Т Е К С Т
Замечание. Такой прием используется только для небольших программ в 2-3 исходных модуля, т.к. любая модификация требует перетрансляции всей программы. В этом случае исходные тексты удобно располагать в одной директории (папке). В общем случае, такой прием не рекомендуется. Средства управления проектом Эти средства включены в описание сред разработки Borland C++ 3.1 и Visual Basic 6.0 и приведены в Приложениях 1 и 2. Инициализация данных Под инициализацией понимают задание значений объектам программы в момент их определения. В языке Basic все числовые объекты и строки постоянной длины инициализируются нулями, строки произвольной длины – "пустой" строкой (""). Средств инициализации другими значениями не предусмотрено, поэтому речь далее пойдет только о языке C. Любое определение может задать начальное значение определяемого объекта с помощью инициаторов. Инициатор: =<выражение>|{<список_выражений>} Все выражения для static и extern объектов – постоянные, для auto и register – произвольные. Если объект типа static или extern не инициируется, то для числовых типов он получает значение нуль, для символьных массивов "" (пустая строка), для указателей – значение символической константы NULL. Другие объекты получают в отведенной области памяти "мусор" (неопределенные значения). Если объект представляет собой совокупность (структура, массив, объединение), то инициатор имеет вид: {<выражение>[<, выражение>]...}. Выражения – это инициаторы для элементов, записанные в порядке их хранения в памяти. Если совокупность содержит составные подобъекты, то правило рекурсивно распространяется и на них. Если инициаторов меньше, чем элементов, то оставшиеся инициируются по общим правилам, если больше, то регистрируется ошибка. Для инициализации символьных массивов можно использовать литералы типа string. Все объекты инициализируются только в момент выделения памяти, по-этому объекты класса памяти static или extern при изменении начальное значение не восстанавливают, а объекты класса памяти auto или register инициализируются каждый раз при входе в функцию или блок, где они определены. Примеры. 1. Скаляры. #define SIZE 3 static int dlina=SIZE+1; int k=n+1;
2. Массивы. int x[ ]={1,2,3}; // Размерность определяет транслятор по числу инициаторов float y[4][3]={ // Эквивалентная запись float y[4][3]={1,3,5,2,4,6,3,5,7}; {1,3,5 }, // 0-я строка {2,4,6 }, // 1-я строка {3,5,7 } // 2-я строка }; // 3-я строка:0 (для static | extern) | "мусор" (для auto | register) float y[4][3]={ // Заполняет только 1-й столбец {1}, {2}, {3}, {4} }; 3. Символьный массив. char msg[ ]="Синтаксическая ошибка в строке %s\n"; Длина массива определяется числом инициаторов. Конечный 0 включается. 4. Массив указателей. /* Выдать название месяца по номеру */ char* month_name(int n){ static char* name[ ]={ "Hеправильный месяц", "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Hоябрь", "Декабрь" }; return n<1||n>12? name[0]:name[n]; } /* End month_name */ 5. Массив структур. static struct { char * mess; int window[4]; }message[ ]={ {"Имя входного файла", {14,12,35,14}}, {"Имя dbf-файла", {16,12,31,14}}, {"Имя файла программы", {12,12,37,14}} };
|
||||
Последнее изменение этой страницы: 2017-02-08; просмотров: 358; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.43.200 (0.006 с.) |