Спонсоры сайта:

Наличие этой страницы в поиске?

Информеры ТИЦ и PR

  Yandex ТИЦ:  
   Google PR:  

Путешественникам, меломанам, бизнесменам, вебмастерам, новости.

Содержание | <<< | >>>

Изменения препроцессора





Стандарт С99 внес небольшие изменения и в препроцессор.

Переменные списки аргументов

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

#define MyMax(...) max(__VA_ARGS__)

выражение

MyMax(a, b);

преобразуется в

max(a, b);

До обозначения переменного количества аргументов (...) макрос может иметь другие аргументы. Например, после определения

#define compare(compfunc, ...) compfunc(__VA_ARGS__)

оператор

compare(strcmp, "один", "два");

преобразуется в оператор

strcmp("один", "два");

Как видно из примера, встроенный идентификатор __VA_ARGS__ заменяется всеми остальными аргументами.

Оператор _Pragma

С выходом С99 в языке С появился еще один способ определять прагму в программе: оператор _Pragma. В общем виде этот оператор выглядит таким образом:

_Pragma("директива")

Здесь директива — это вызываемая прагма[1]. Появление оператора _Pragma дает прагмам возможность участвовать в макрозамене.

Встроенные прагмы

ПрагмаЧто означает
STDC FP_CONTRACT ON/OFF/DEFAULTВо включенном состоянии (ON) выражения с плавающей точкой считаются неделимыми структурами, которые обрабатываются с помощью аппаратуры. Состояние по умолчанию (DEFAULT) определяется реализацией.
STDC FENV_ACCESS ON/OFF/DEFAULTСообщает компилятору, что доступна аппаратура для выполнения операций с плавающей точкой. Состояние по умолчанию определяется реализацией.
STDC CX_LIMITED_RANGE ON/OFF/DEFAULTВо включенном состоянии (ON)сообщает компилятору, что некоторые формулы с составными значениями являются безопасными. Отключенное состояние (OFF) задается по умолчанию.

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

Новые встроенные макросы

К макросам, поддерживаемым С89, в С99 добавлены следующие:

__STDC_HOSTED__1, если имеется операционная система
__STDC_VERSION__не меньше, чем 199901L; представляет версию языка С
__STDC_IЕС_559__1, если поддерживаются арифметические операции с плавающей запятой IEC 60559
__STDC_IEC_559_COMPLEX__1, если поддерживаются арифметические операции с комплексными числами IEC 60559
__STDC_ISO_10646__Значение в виде гггглшЬ, которое указывает год и месяц выхода спецификации ISO/IEC 10646, поддерживаемой компилятором

----------

[1]Прагма называется также указанием транслятору, псевдокомментарием, директивой транслятора, указанием компилятору, директивой компилятора.


Содержание | <<< | >>>

C++ исходники. Все примеры - рабочие:

часы:

Dev C++ WinAPI Стрелочные часы Analog Clock

Dev C++ WinAPI Цифровые прозрачные часы. Текст на рабочем столе. Digital transparent clock. Text on desktop

Dev C++ OLE WinApi CALENDAR and DIGITAL CLOCK (15kb). Календарь и цифровые часы

Dev C++ OLE WinAPI Календарь и цифровые часы почти Vista SideBar всего 21kb

плееры:

Microsoft Visual C++ 2008 Direct Show DVD Mini Player 10.5kb

Dev C++ WinAPI Микро медиа плеер 3.5kb

Dev C++ WinAPI Мини медиа плеер 4.5kb

Dev C++ WinAPI Hint Всплывающая подсказка

Dev C++ WinAPI RECT - имитатор кнопки

Dev C++ WinAPI Заполнить ListBox

Dev C++ WinAPI Заполнить, редактировать, сохранить, загрузить ListBox (PlayList)

Dev C++ WinAPI Индикатор уровня

Dev C++ WinAPI MP3 Микро плеер Открыть с помощью...

Dev C++ WinAPI Своя кнопка

изображения:

Dev C++ GDI+ WinAPI Mini FotoResizer (16kb), изменяет размеры всех фото (JPG) до указанного размера в выбраной папке и её подпапках

Dev C++ WinAPI Сохранить BITMAP экрана, десктопа, окна, клиентской области.

Dev C++ WinAPI Изменить размер изображения BMP RESIZE. Загрузка изображений из ФАЙЛА, вывод на экран и сохранение в файл.

Dev C++ WinAPI Загрузка изображений из РЕСУРСОВ и вывод на экран.

Dev C++ GDI+ WinAPI. Преобразовать изображения из одного формата в другой (JPG в BMP, GIF, PNG и обратно ), используя дополнительные библиотеки GDI+. Загрузка изображений из файла и сохранение в файл.

Dev C++ GDI+ WinAPI масштабирование JPG RESIZE

Dev C++ OLE WinAPI. Преобразовать изображения из JPG в BMP, используя дополнительные библиотеки OLE. Загрузка изображений из РЕСУРСОВ и сохранение в файл.

Dev C++ OLE WinAPI преобразовать JPG в BMP, используя дополнительные библиотеки OLE. Загрузка изображений из ФАЙЛА и сохранение в файл.

Dev C++ OLE WinAPI масштабирование BMP RESIZE

разное:

Dev C++ WinAPI Dev C++ Преобразовать цвет точки экрана в HTML код

Dev C++ WinAPI NOTIFYICONDATA WS_EX_TOOLWINDOW Иконка в области уведомлений (notification area, tray, трей). Удалить с панели задач (taskbar).

Dev C++ WinAPI ShellExecute Создать ссылку на WEB сайт

Dev C++ WinAPI ShellExecute Создать окно со ссылкой на WEB сайт

Dev C++ WinAPI CreateProcess ShellExecute WinExec Запуск приложения из приложения

Dev C++ OLE WinAPI Создать регион Regions PopUp Меню Menu

Dev C++ FindFiles. Поиск файлов заданного типа (в примере *.JPG) в папке и её подпапках

библиотеки:

Скачать библиотеку GDI+ для Dev C++

Скачать справочнник с примерами языка C.