Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 4new.rtf
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
282.77 Кб
Скачать

Управляющая директива #line.

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

#line целая-константа <"имя-файла">

указывает, что следующая исходная строка получена из строки номер целая-константа файла "имя-файла". После того, как имя-файла было однажды указано, последующие команды #line, относящиеся к этому файлу, могут использоваться без явного имени файла.

Например

#include <stdio.h>

#line 4 "junk.c"

void main()

{

printf("in line %d of %s", __LINE__, __FILE__); #line 12 "temp.c"

printf("\n");

printf(" in line %d of %s", __LINE__, __FILE__);

#line 8

printf("\n");

printf("in line %d of %s", __LINE__, __FILE__);

}

Директива #line обычно используется утилитами, генерирующими код С как выходной, а не как написанный человеком код.

Директива #error.

Директива #error имеет синтаксис:

#error сообщение

Она выдает сообщение

Error: имя-файла строка# : error directive: сообщение

Эта директива обычно используется с условными директивами, чтобы отловить некоторые нежелательные условия времени компиляции. Обычно это условие будет false. Если условие true, Вы хотите, чтобы компилятор вывел сообщение об ошибке и остановил компиляцию. Вы делаете это, поместив директиву #error внутри условия, которое будет true для нежелательного случая.

Например, предположим Вы определили #define MYVAL, которое должно быть 0 или 1. Вы можете включить следующее выражение в исходный код для проверки на некорректное значение MYVAL:

#if (MYVAL != 0 && MYVAL != 1)

#error MYVAL должен быть определен от 0 до 1

#endif

Директива #pragma.

Директива #pragma применяется для директив, зависимых от реализации компилятора:

#pragma имя-директивы

С помощью #pragma Borland C может определить директивы, которые не конфликтуют с другими компиляторами, поддерживающими #pragma. Если компилятор не распознает имя директивы, он игнорирует директиву #pragma без выдачи ошибок или предупреждений. За полным списком опций директивы (имя-директивы) и их значением необходимо обращаться к справочной документации компилятора. Обычно с помощью директивы можно переопределить или назначить параметры компиляции программы, при этом параметры, заданные при помощи этой директивы имеют приоритет над параметрами, заданными в настройках проекта либо в командной строке.

Задание

Организовать включаемые файлы для программы, разработанной в результате лабораторной работы №3, разбив описания функций и необходимых переменных по различным файлам (мин. два файла *.c и соответствующих им *.h). Организовать компиляцию функции обработки символа в двух различных вариантах, определяемых по наличию определения (#define). В качестве первого варианта компиляции взять разработанную на предыдущей лабораторной работе программу. В качестве второго варианта взять вариант следующего по списку студента из предыдущей лабораторной работы.

Задание на предыдущую лабораторную работу (№3): Составить программу обработки текста, считываемого из файла. Для чего разработать функцию для обработки текста с переменным числом параметров, в качестве параметров она должна принимать значения текстовых предложений (разделитель - .), строк (разделитель - \n) или слов (разделитель – пробел или . , ! ? \n) (по варианту задания) для обработки и возвращать указатель на обработанный текст. В качестве первого параметра – имя функции (указатель), используемой для перевода символов из одного формата в другой, которую определить ниже по тексту программы. Данная функция должна вызываться через переданный указатель и принимать обрабатываемый(-ые) символ(ы), возвращая результирующий. Обработанный текст вывести в результирующий файл. В отчете привести исходный и обработанный текст.