Можно создать дубликат:
How to make a variadic macro (variable number of arguments)Могу ли я иметь макрос C, который принимает неопределенное количество параметров?
Я хочу, чтобы иметь макрос журнала в основном C, который принимает аргументы, подобные printf
и регистрирует их. Однако я хочу, чтобы он регистрировался (уровень журнала, файл vs stderr
и т. Д.), Чтобы быть чем-то установленным во время компиляции, а не во время выполнения; при этом метод ничего не делает и, надеюсь, оптимизируется из кода, если я устанавливаю параметры для игнорирования регистрации низкого уровня.
До сих пор у меня есть макрос, который определяется на основе параметра, определенного во время компиляции. Если параметр определен, протоколирование переходит к моему методу журнала (для входа в файлы), в противном случае он переходит в stderr
. Тем не менее, я могу передать строку в этот макрос. Метод log способен принимать неопределенное количество аргументов и работает с использованием синтаксиса printf
. Я хочу знать, есть ли способ установить мой макрос, чтобы он передавал неопределенное количество аргументов в файл журнала?
И поскольку я подозреваю, что я не могу этого сделать, есть еще один способ достижения того, что я хочу в базовом C (я не могу использовать C++ или boost).