Как и функции, мы также можем передавать аргументы переменной длины в макросы. Для этого мы будем использовать следующие идентификаторы препроцессора.
Чтобы поддерживать аргументы переменной длины в макросе, мы должны включить эллипсы (…) в определение макроса. Существует также идентификатор предварительной обработки «__VA_ARGS__», который заботится о подстановках аргументов переменной длины, которые предоставляются макросу. Оператор конкатенации ## (он же оператор вставки) используется для конкатенации переменных аргументов.
Давайте посмотрим на примере. Ниже макрос принимает аргумент переменной длины, например, функцию «printf ()». Этот макрос предназначен для регистрации ошибок. Макрос печатает имя файла, за которым следует номер строки, и, наконец, печатает информацию / сообщение об ошибке. Первые аргументы «prio» определяют приоритет сообщения, то есть, является ли это информационным сообщением или ошибкой, «поток» может быть «стандартным выводом» или «стандартной ошибкой». Он отображает сообщения INFO в stdout и сообщения ERROR в потоке stderr.
|
Скомпилируйте и запустите вышеуказанную программу, она выдаст нижеприведенный результат.
[narendra@/media/partition/GFG]$ ./variable_length [ERR] : variable_length.c : 26 : Failed to open file [INFO] : variable_length.c : 27 : Hello Geeks for Geeks [INFO] : variable_length.c : 28 : 10 + 20 = 30 [narendra@/media/partition/GFG]$
Эта статья составлена Нарендрой Кангралкар . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Как посчитать переменные числа аргументов в C?
- Аргумент переменной длины в C
- Массивы переменной длины в C и C ++
- Можем ли мы получить доступ к глобальной переменной, если есть локальная переменная с таким же именем?
- X-Macros в Си
- Макросы против функций
- Многострочные макросы в Си
- Предопределенные макросы в C с примерами
- Гигиенические Макросы: Введение
- Макросы прогнозирования ветвлений в GCC
- Диапазоны типов данных и их макросы в C ++
- Интересные факты о макросах и препроцессорах в Си
- Внутренняя статическая переменная и внешняя статическая переменная с примерами в C
- Аргументы командной строки в C / C ++
- Шаблоны и Аргументы по умолчанию
0.00 (0%) 0 votes