Предопределенные макросы | Программирование на C и C++
Главная » Язык С » Препроцессор и комментарии
Стандарт ANSI С имеет 5 предопределенных макросов:
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__
Borland С++ также определяет дополнительные макросы:
__ВСОРТ__
__BCPLUSPLUS__
__BORLANDC__
__CDECL__
__CHAR_UNSIGNED
__CONSOLE__
__CPPUNWIND
__cplusplus
__DLL__
_M_IX86__
__MSDOS__
__MT__
__OVERLAY__
__PASCAL__
__TCPLUSPLUS __
__TEMPLATES__
__TLS__
__TURBOC__
__WCHAR_T
__WCHAR_T_DEFINED
__Windows
__WIN32__
Макрос __DATE__ содержит строку в виде месяц/день/год, соответствующую дате перевода исходного кода в объектный.
Время, когда был откомпилирован исходный код, содержится в строке __TIME__ в формате
часы: минуты: секунды.
Если определен макрос __STDC__ то, значит, программа была откомпилирована с использованием стандарта ANSI С со включенной проверкой на совместимость.
__STDC__ не определен.
__ВСОРТ__ определен, если используется оптимизация.
При использовании Borland С++ если компилировать программу как С++-программу, то определяется макрос __BCPLUSPLUS__. Компиляция С++-программы также приводит к определению __TCPLUSPLUS__. Оба макроса содержат шестнадцатиричные значения, увеличивающиеся с каждой новой версией компилятора.
__BORLANDC__ содержит текущую версию компилятора (в шестнадцатиричном виде).
Макрос __CDECL__ определен, если используется стандартное соглашение С о вызове функций, т.е. паскалевский вызов не используется. В противном случае макрос не определен (если определен, то он принимает значение 1).
Если определен __CHAR_UNSIGNED, то стандартным символьным типом становится unsigned.
Если __CONSOLE__ определен для 32-битного компилятора, то программа является консольным приложением.
Если __CPPUNWIND определен, то разрешено разворачивание стека.
Если программа откомпилирована как С++-программа, то __cplusplus установлен в 1.
Для Borland С++ __DLL__ установлен в 1 при создании DLL-файла.
Макрос __М_IХ86 определен всегда.
Макрос __MSDOS__ установлен в 1 при использовании MS-DOS версии Borland C/C++.
Макрос __МТ__ установлен в 1, если многопоточная библиотека используется с 32-битным
компилятором.
Когда программа компилируется с использованием оверлеев, то __OVERLAY__ установлен в 1.
Макрос __PASCAL__ установлен в 1 только в том случае, если при компиляции программы
используется паскалевское соглашение о вызовах функций.
Для Borland С++ __TEMPLATES__ установлен в 1 для всех версий компиляторов, поддерживающих шаблоны. Данный макрос применим только при компиляции С++-программ.
При компиляции с использованием 32-компилятора __TLS__ содержит ненулевое значение.
__TURBOC__ содержит шестнадцатиричное значение, увеличивающееся с каждой новой версией языка.
Для С++-программ _WCHAR_T и _WCHAR_T_DEFINED установлены в 1 для указания того, что тип wchar_t является встроенным типом данных.
Они не определены для С-программ.
Для Borland С++ _Windows определен, если программа компилируется для использования под Windows.
При использовании 32-битного компилятора __WIN32__ установлен в 1.
В большинстве случаев данные макросы используются для достаточно сложных сред программирования, когда разрабатываются или поддерживаются несколько различных версий программ.
‹ Операторы препроцессора # и ## Вверх Комментарии ›
G070 | systemcontrol.ru
Панель оператора (HMI панель) – это электронное устройство с дисплеем, предназначенное для отображения информации о состоянии технологического процесса и оперативного управления им, а также накопление и хранения данных по основным рабочим параметрам системы.
Панели оператора Kinco серии Green – это новое поколение сенсорных панелей оператора для промышленных система автоматизации, отвечающих современным требованиям предъявляемым к человеко-машинным интерфейсам.
Дисплей со светодиодной подсветкой, диагональю от 4.3“ до 15“. В качестве операционной системы используется собственная система на базе Linux.
Панели оператора имеют собственную среду разработки «Kinco Dtools», которая поддерживает векторную графику, растровые файлы bmp, jpg, gif и позволяет расширять функциональные возможности панели оператора по средствам Си-макросов. Среда разработки интерфейсов находиться в свободном доступе, скачать среду разработки можно здесь. Концептуально среда разработки Kinco Dtools-это продолжение идей среды Kinco HMIware, по среде Kinco HMIware наша компания разработала обучающий видеокурс, который Вы можете просмотреть здесь. Примеры проектов можно найти здесь. Ответы на часто задаваемые вопросы по работе с HMI Kinco можно найти в разделе F.A.Q. Панели оператора серии Green имеют возможность работы с контроллерами различных производителей, таких как: Kinco, Advantech, ABB, Allen Bradley, Bosch Rexroth, Beckhoff, Delta, LS, Hitachi, Mitsubishi, Siemens, Emerson, Omron, Panasonic, Schneider Electric, Yokogawa, Yaskawa, GE Fanuc, FATEK, Fuji.
Особенности серии Green
-Цветопередача: 16.7 миллиона цветов
-Яркость от 400 кд/м2
-Память ОЗУ: 128 Мб DDR3
-Процессор ARM RICS 792 Мгц
-Гальваническая развязка COM портов (панели GH)
-Среда разработки DTools (совместимость с проектами Kinco HMIware)
Функциональные возможности
Загрузка проекта через USB-кабель/Ethernet
Подключение панели оператора к персональному компьютеру и загрузка проекта осуществляется при помощи USB-кабеля (USB-B) или по средствам ethernet порта.
Загрузка проекта через USB-Flash накопитель/SD-карта
Разработчик может загрузить проект в панель оператора используя USB-Flash накопитель или при помощи SD-карты.
Архивирование данных на USB-Flash накопитель/SD-карту
Разработчик может вести и сохранять на USB-Flash накопитель/SD-карты архивы: значений параметров, журналов аварий, журналов событий.
Настройка уровней доступа
В панелях оператора Kinco реализована функция многоуровневого доступа к интерфейсу.
Загрузка графических изображений
Среда разработки интерфейсов Kinco Dtools дает возможность загрузки графического изображения поддерживаемых форматов в том числе: gpg, bmp, png,gif.
Поддержка языка СИ
Среда разработки интерфейсов Kinco Dtools поддерживает язык СИ. Разработчик может создавать на языке СИ макросы.
Подробное создание интерфейса панели оператора Kinco.
Освященные темы видеоурока:
1.Вывод параметров контроллера на экран панели оператора, написание макроса для вывода статуса установок.
2.Создание страницы «Окно аварий». Написание макроса для вывода статуса сигналов тревог.
3.Создание архива значений параметров с последующим сохранением данных на Flash накопитель.
4.Создание «Журнала событий».
Создание библиотеки событий.
5.Вывод значений параметров контроллера в виде графиков.
макросов (C/C++) | Microsoft Узнайте
Редактировать Твиттер LinkedIn Фейсбук Электронная почта- Статья
Препроцессор расширяет макросы во всех строках, кроме директив препроцессора , строк, которые имеют # в качестве первого непробельного символа. Он расширяет макросы в частях некоторых директив, которые не пропускаются как часть условной компиляции. Директивы условной компиляции позволяют запретить компиляцию частей исходного файла. Они проверяют постоянное выражение или идентификатор, чтобы определить, какие текстовые блоки передать компилятору, а какие удалить из исходного файла во время предварительной обработки.
Директива #define обычно используется для связывания значимых идентификаторов с константами, ключевыми словами и часто используемыми операторами или выражениями. Идентификаторы, представляющие константы, иногда называются
Когда имя макроса распознается в исходном тексте программы или в аргументах некоторых других команд препроцессора, оно рассматривается как вызов этого макроса. Имя макроса заменяется копией тела макроса. Если макрос принимает аргументы, фактические аргументы, следующие за именем макроса, заменяются формальными параметрами в теле макроса. Процесс замены вызова макроса обработанной копией тела называется расширение вызова макроса.
На практике существует два типа макросов. Объектно-подобные макросы не принимают аргументов.
После того как вы определили макрос, вы не можете переопределить его, присвоив ему другое значение, не удалив предварительно исходное определение. Однако вы можете переопределить макрос точно таким же определением. Таким образом, одно и то же определение может встречаться в программе более одного раза.
Директива #undef удаляет определение макроса. После того как вы удалили определение, вы можете переопределить макрос с другим значением. Директива #define и директива #undef обсуждают #define и #undef директивы соответственно.
Для получения дополнительной информации см.
Макросы и C++
Макросы Variadic
Предопределенные макросы
См. также
Справочник по препроцессору C/C++
Обратная связь
Просмотреть все отзывы о странице
Макросы на C, как создать полезные псевдонимы для кода
By JuditovaOn 0 комментариев Когда любой программист имеет дело с большим и сложным кодом, требуется некоторое упрощение при работе с большим количеством функций, переменных и инструкций.
С помощью макросов на языке C вывод или постоянное значение можно определить один раз, а затем повторно использовать снова и снова. Нужно сделать модификацию значения макроса? Просто измените один раз, и это сразу же отразится на остальной части кода. Другими словами, это полезный ярлык. В этом коротком руководстве вы узнаете, как реализовать эту очень полезную функцию.
Содержание
Синтаксис макросов
Макрос состоит из 3 частей. Во-первых, слово #define помещается в новое предложение. После этого метка или ее название. Наконец, текст — это часть или аргумент, который следует заменить меткой .
#define label text
Пример макроса
Пример 1: константы
Обычно макросы используются для определения констант, таких как математические операции, часы частоты, данные и т.
д. Например:
#define clock 4000000
И это можно использовать так:
int time=1/clock;
Пример 2: Выводы
Вместо того, чтобы использовать выводы микроконтроллера в соответствии с их именами, вызовите их с помощью макроса. Если основным преимуществом является простота, то второстепенным преимуществом является простота переназначения в случае необходимости замены штифта; остальной код оставляем без изменений! Следующий пример взят из руководства о том, как управлять 7-сегментными дисплеями с помощью 8-битной PIC.
//Макросы для 7-сегментного дисплея #define f PORTAbits.RA2 #define g PORTCbits.RC0 # определить PORTCbits.RC1 #define b PORTCbits.RC2 #define PORTCbits.RC3 # определить d PORTCbits.RC4 #define c PORTCbits.RC5
Чтобы использовать этот ярлык, просто вызовите его по метке .
Ресурсы
- Макросы. Справка для разработчиков MPLab. Связь.
Указатель содержания techZorro
Продолжайте читать!
- Макросы на C, как создать полезные псевдонимы для кода Макросы чрезвычайно полезны для экономии времени и беспорядка при написании кода. Этот учебник включает учебные пособия по C. Нажмите здесь, чтобы прочитать.

- Switch в C, аккуратное средство для принятия множественных решений в потоке управления
В потоке управления Switch заменяет множественные «если» и объединяется в одно элегантное решение для принятия решений. Нажмите здесь, чтобы прочитать.
- Цикл While в языке C, функция «сначала спросить» в потоке управления
While in C отлично подходит для создания циклов с использованием потока управления. Это отлично подходит для повторяющихся задач и счетчиков! Нажми сюда, чтобы прочитать больше.
Шаблон кода - , простое руководство для микроконтроллеров PIC на C
Написание программы по порядку экономит время. Загрузите сегодня шаблон кода для микроконтроллеров PIC бесплатно. Нажми сюда, чтобы прочитать больше.
Функции - на языке программирования C Функции
позволяют эффективно повторно использовать код и открывать библиотеки, созданные другими. Нажмите здесь, чтобы научиться использовать функции в C.
Нравится:
Нравится Загрузка.
