C. Бочков - Язык программирования Си для персонального компьютера

Тут можно читать онлайн C. Бочков - Язык программирования Си для персонального компьютера - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство СП Диалог, Радио и связь, год 1990. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Язык программирования Си для персонального компьютера
  • Автор:
  • Жанр:
  • Издательство:
    СП Диалог, Радио и связь
  • Год:
    1990
  • ISBN:
    5-256-00974-5
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

C. Бочков - Язык программирования Си для персонального компьютера краткое содержание

Язык программирования Си для персонального компьютера - описание и краткое содержание, автор C. Бочков, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга содержит полное описание наиболее распространенных реализаций языка программирования Си на 16-разрядных микроЭВМ, совместимых с IBM PC. Приведено описание стандартных библиотек языка.

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

Язык программирования Си для персонального компьютера - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования Си для персонального компьютера - читать книгу онлайн бесплатно, автор C. Бочков
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

#define STACK 200

#endif

/* пример 4 */

#define REG 1 register

#define REG2 register

#if defined (M_86)

#define REG3

#define REG4

#else

#ifdefined(M_68000)

#define REG4 register

#endif

#endif

В первом примере директивы #if, #elif, #else, #endifуправляют компиляцией одного из трех вызовов функции. Вызов функции creditкомпилируется, если определена именованная константа CREDIT. Если определена именованная константа DEBIT, то компилируется вызов функции debit. Если ни одна из .именованных констант не определена, то компилируется вызов функции printerror. Следует учитывать, что CREDIT и creditявляются различными идентификаторами в языке Си.

В следующих двух примерах предполагается, что константа DLEVEL предварительно определена директивой #define.

Во втором примере показаны два вложенных набора директив #if, #else, #endif. Первый набор директив обрабатывается, если значение DLEVEL больше 5. В противном случае обрабатывается второй набор.

В третьем примере директивы уловной компиляции используют для выбора текста значение константы DLEVEL. Константа STACK определяется со значением 0, 100 или 200, в зависимости от значения DLEVEL. Если DLEVEL больше 5, то компилируется вызов функции display, а константа STACK не определяется.

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

Компилятор обычно выделяет регистровую память переменным в том порядке, в котором записаны объявления переменных в программе. Если программа содержит больше объявлений переменных класса памяти register, чем имеется регистров в данной операционной среде, то регистровую память получат только те переменные, объявления которых записаны раньше. Следовательно, если более интенсивно будут использоваться те переменные, которые объявлены позже, выигрыш в эффективности от использования регистров окажется незначительным.

В примере показано, каким образом предоставить приоритет регистровой памяти наиболее важным переменным. Именованные константы REG1 и REG2 определяются как ключевые слова register. Они предназначены для объявления двух наиболее важных локальных переменных функции. Например, в следующем фрагменте программы такими переменными являются b и c.

func(REG3 int а)

{

REG1 int b;

REG2 int c;

REG4 int d;

}

Если определена константа М_86, препроцессор удаляет идентификаторы REG3 и REG4 из файла путем замены их на пустой текст. Регистровую память в этом случае получат только переменные b и с. Если определен идентификатор М_68000, то все четыре переменные объявляются с классом памяти register.

Если не определена ни одна из констант — ни М_86, ни М_68000, — то регистровую память получат переменные а, b и с.

Директивы #ifdef и #ifndef

Синтаксис:

#ifdef < идентификатор >

#ifndef < идентификатор >

Аналогично директиве #if, за директивами #ifdefи #ifndefможет следовать набор директив #elifи директива #else. Набор должен быть завершен директивой #endif.

Использование директив #ifdefи #ifndefэквивалентно применению директивы #if, использующей выражение с операцией defined(< идентификатор >). Эти директивы поддерживаются исключительно для совместимости с предыдущими версиями компиляторов языка Си. Для новых программ рекомендуется использовать директиву #ifс операцией defined(< идентификатор >).

Когда препроцессор обрабатывает директиву #ifdef, он проверяет, определен ли в данный момент < идентификатор > директивой #define. Если да, условие считается истинным, если нет — ложным.

Директива #ifndefпротивоположна по действию директиве #ifdef. Если < идентификатор > не был определен директивой #define, или его определение уже отменено директивой #undef, то условие считается истинным. В противном случае условие ложно.

Управление нумерацией строк

Синтаксис:

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

Директива #lineсообщает компилятору языка Си об изменении имени исходного файла и порядка нумерации строк. Это изменение отражается только на диагностических сообщениях компилятора: исходный файл будет теперь именоваться как < имя-файла >, а текущая компилируемая строка получит номер < константа >. После обработки очередной строки счетчик номеров строк увеличивается на единицу. В случае изменения номера строки и имени исходного файла директивой #lineкомпилятор "забывает" их прежние значения и продолжает работу уже с новыми значениями.

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

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

Текущий номер строки и имя исходного файла доступны в программе через псевдопеременные с именами __LINE__ и __FILE__. Эти псевдопеременные могут быть использованы для выдачи во время выполнения сообщений о точном местоположении ошибки.

Значением псевдопеременной __FILE__ является строка, представляющая имя файла, заключенное в двойные кавычки. Поэтому для печати имени исходного файла не требуется заключать сам идентификатор __FILE__ в двойные кавычки.

Примеры.

/* пример 1 */

#line 151 "copy.с"

/* пример 2 */

#define ASSERT(cond) if (!cond)\

{printf ("ошибка в строке %d файла %s\n", \

__LINE__, __FILE__);} else;

В первом примере устанавливается имя исходного файла сору.с и текущий номер строки 151.

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

Директива обработки ошибок

В СП ТС реализована директива #error. Ее формат:

#error < текст >

Обычно эту директиву записывают среди директив условной компиляции для обнаружения некоторой недопустимой ситуации. По директиве #errorпрепроцессор прерывает компиляцию и выдает следующее сообщение:

Fatal: < имя-файла > < номер-строки > Error directive: < текст >

Fatal — признак фатальной ошибки; < имя-файла > — имя исходного файла; < номер-строки > — текущий номер строки; Error directive — сообщение об ошибке в директиве; < текст > — собственно текст диагностического сообщения.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


C. Бочков читать все книги автора по порядку

C. Бочков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования Си для персонального компьютера отзывы


Отзывы читателей о книге Язык программирования Си для персонального компьютера, автор: C. Бочков. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x