Списки с переменным количеством аргументов
В версии С99 добавлена возможность создания макросов, которые принимают переменное количество аргументов. В определении макроса этот момент обозначается многоточием (...). Встроенный идентификатор предпроцессорной обработки __VA_ARGS__ определяет, куда будут подставляться аргументы. Например, после включения в программу определения #define МуМах(...) max(__VA_ARGS__) оператор МуМах(а, Ь); преобразуется в оператор max(а, b); До обозначения переменного количества аргументов (...) макрос может иметь другие аргументы. Например, после определения #define compare(compfunc, ...) compfunc(__VA_ARGS__) оператор compare(strcmp, "one", "two"); преобразуется в оператор strcmp("one", "two"); Как видно из примера, встроенный идентификатор __VA_ARGS__ заменяется всеми остальными аргументами. |
Нет комментариев. Оставить комментарий: |