Вход/Регистрация
Язык Си - руководство для начинающих
вернуться

Д. МАРТИН

Шрифт:

Несколько замечаний по поводу формата.

Сначала идет ключевое слово #define. Оно должно начинаться с самой левой позиции. Потом следует символическое имя константы, а затем ее величина. Символ "точка с запятой" не используется, поскольку это не оператор языка Си. Почему имя TAXRATE пишется прописными буква ми? В процессе использования языка Си выработалась традиция писать константы прописными буквами. Если при просмотре программы вам встретится имя, написанное прописными буквами, вы сразу поймете, что имеете дело с константой, а не с переменной. Это еще один способ улучшить читаемость программы. Ваша программа будет работать даже и тогда, когда вы будете писать константы строчными буквами, но при этом вы должны чувствовать свою вину, поскольку нарушаете традицию.

Приведем простой пример:

/* пицца */

#define PI 3,14159

main /* изучение вашей пиццы */

{

float area, circum, radius;

printf("Чемy равен радиус вашей пиццы? \n");

scanf("%f", &radius);

area = PI * radius * radius;

printf(" Основные параметры вашей пиццы следующие \n");

printf(" длина окружности = %1.2f, площадь =%1.2f \n circum, area);

}

 

РИС.4.5. Обработка текста программы препроцессором

Использование спецификации %1.2f в операторе printf приведет к тому, что при печати результаты будут округлены до двух десятичных цифр. Мы понимаем, конечно, что написанная выше программа может и не отражать ваши собственные вкусы, касающиеся пиццы, но во множестве программ, посвященных этому вопросу, она займет свое скромное место. Вот один из примеров ее выполнения:

Чему равен радиус вашей пиццы? 6.0

Основные параметры вашей пиццы следующие: длина окружности = 37.70,

площадь окружности = 113.40.

Директиву #define можно также использовать для определения символьных и строковых констант. Необходимо использовать знак "апостроф" в первом случае и кавычки - во втором. Примеры, приведенные ниже, вполне правомерны

#define ВЕЕР '\007'

#define ESS 'S'

#deline NULL '\0'

#define OOPS "Ну вот, вы и сделали это!"

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

1. Соберите все ваши директивы #define в один файл и назовите его, например, const.h.

2. В начало каждого файла, содержащего программу, включите директиву #include "const.h."

Тогда, если вы будете выполнять программу, препроцессор прочтет файл с именем const.h и использует все директивы #define вашей программы. Получилось так, что символ .h в конце имени файла напомнит вам, что этот файл является "заголовком", т.е. в нем содержится вся информация, которая должна попасть в начало вашей программы. Самому препроцессору безразлично, используете ли вы символ .h в имени файла или нет.

Язык Си - искусный фокусник: создание псевдоимен

Возможности директивы #define не исчерпываются только символическим представлением констант. Рассмотрим, например, cледующую программу:

#include "alias. h"

program begin

whole yours, mine then

spitout(" Введите, пожалуйста, целое число.\n" )

then takem(" %d", & yours)

then mine = yours times TWO then

spitout(" %d в два раза больше вашего числа! \n" , mine) then end

Странно, текст что-то смутно напоминает, язык немного похож на Паскаль, но программа не похожа на Си-программу. Секрет лежит, конечно, в файле с именем alias.h. Давайте посмотрим, что в нем содержится?

alias. h #define program main

#define degin { #define enf } #define then;

  • Читать дальше
  • 1
  • ...
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: