Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб по С и С++ / ЛАБ_С_№10.doc
Скачиваний:
69
Добавлен:
17.03.2015
Размер:
60.42 Кб
Скачать

Void main(void)

{

#ifdef TRACE

puts("функция main\n");

#endif

getline();

}

void getline(void)

{

#ifdef TRACE

puts("функция getline");

#else

puts("hello!");

#endif

return;

}

/* текст программы после обработки препроцессором, если */

/* есть #define TRACE нет #define TRACE */

/* содержимое файла stdio.h */ /* содержимое stdio.h */

void getline(void); void getline(void);

void main(void) void main(void)

{ {

puts("функция main\n"); getline();

getline(); }

} void getline(void)

void getline(void) {

{ puts("hello!");

puts("функция getline"); return;

return; }

}

Пример 9.

/* в зависимости от значения MAX получаем три разных загрузочных модуля (генератор программ) текст программы до обработки препроцессором */

#define MAX 3

#include<stdio.h>

Void main(void)

{

#if MAX==5

puts("MAX=5");

#elif MAX==3

puts("MAX=3");

#else

puts("MAX другое");

#endif

}

/* в исходном модуле */

/* MAX равно 3 MAX равно 5 MAX равно 10 */

/* текст программы после обработки препроцессором */

/* содержимое файла stdio.h */

void main(void) void main(void) void main(void)

{ { {

puts("MAX=3"); puts("MAX=5"); puts("MAX другое");

} } }

Примечание. Текст любого системного заголовочного файла может служить примером использования условной компиляции.

ЗАДАНИЕ

Выполнить следующие варианты заданий, используя как можно больше директив препроцессора:

Вариант 1

Ваша программа содержит функцию. Определение функции находится в отдельном файле и чтобы получить загрузочный модуль в Турбо Си++ необходимо составить файл проекта. Напишите текст программы так, чтобы выполнить ее обычным способом.

Вариант 2

Напишите программу, внешне напоминающую вам Паскаль, но которую обработает компилятор языка Си.

Вариант 3 ___сделать это_!!!!!!!!!

Составьте небольшую произвольную программу. Включите строки для отладочного выполнения программы, которые не должны присутствовать при выполнении программы в рабочем режиме. Выполните программу в отладочном и рабочем режимах.

Вариант 4

Определить макрофункцию вычисления куба числа и включить ее в состав программы так, чтобы ею могли воспользовать­ся и другие программы. Вычислить кубы следующих чисел:

х, х+2, 5.6х+3, -3.

Вариант 5

Определить макрофункцию для вывода на экран одного целого числа и включить ее в состав программы так, чтобы ею могли воспользоваться и другие программы. Вывести на экран числа х, х-6, 5х, abs(-5).

Вариант 6

Определить и использовать в программе макрофункцию обнуление любого одномерного массива произвольной длины и включить ее в состав программы так, чтобы ею могли вос­пользоваться и другие программы.

Вариант 7

Напишите два фрагмента программы. Напишите программу main так, чтобы при выборе одной модели памяти выполнялся один фрагмент программы, а при другой - второй.

Оформить фрагменты программы так, чтобы ими могли воспользоваться и другие программы.

Вариант 8

Программа обрабатывает одномерный массив и должна вы-

полняться двояким образом:

если размер массива больше 10, то память для массива выделить динамически и к элементам массива обращаться через указатели;

если размер массива не больше 10, то память для массива выделить до начала выполнения программы и к элементам масси­ва обращаться по имени.

Вариант 9

Программа обрабатывает матрицу и должна выполняться двояким образом:

если в программе есть константы, определяющие коли­чество строк и столбцов, то память для матрицы выделить ди­намически и к элементам массива обращаться через указатели;

если хотя бы одной константы нет, память для массива

выделить до начала выполнения программы и к элементам масси­ва обращаться по имени.

Вариант 10

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

файл <полное имя файла> содержит <количество> строк и выполняется <дата> с использованием <имя модели памяти>. Каково местоположение фрагмента в функции?

Соседние файлы в папке Лаб по С и С++