Ведение журнала с помощью макроса variadic
Я пытаюсь написать макрос регистрации без накладных расходов в C.
Моя первая идея:
#define debug_print(...) \
{ \
printf(_LOG_FMT, _LOG_ARGS); \
printf(__VA_ARGS__); \
printf("\n"); \
}
Но это проблема, которую я должен вызвать printf три раза (накладные расходы).
Моя вторая идея:
#define _LOGFUNCTION(LEVEL, message, ...) \
printf(_LOG_FMT message "\n", _LOG_ARGS, __VA_ARGS__)
Но теперь я не могу передать простую строку для входа. Он будет жаловаться на ноль аргументов в VA_ARGS.
Есть ли способ исправить обе эти проблемы?
Большое спасибо за вашу помощь!
1 ответ
Нашел ответ от комментария выше!
#define BAR_HELPER(fmt, ...) printf(fmt "\n%s", __VA_ARGS__)
#define BAR(...) BAR_HELPER(__VA_ARGS__, "")
/questions/43180049/standartnaya-alternativa-tryuku-gccvaargs/43180058#43180058
Еще раз спасибо Некоторые программист чувак!