Справочник по C/C++
Списки с переменным количеством аргументов

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

#define МуМах(...) max(__VA_ARGS__)

оператор

МуМах(а, Ь);

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

max(а, b);

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

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

оператор

compare(strcmp, "one", "two");

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

strcmp("one", "two");

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






Нет комментариев.



Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: