LINUX.ORG.RU

Замена символов в С-препроцессоре


0

0

Хочется странного, а именно, замены символов средствами препроцессора.
Зачем это нужно:
- есть библиотека log4c, она позволяет логировать в группы логов, формат которых: группа.подгруппа1.подгруппа2...
- есть макрос INIT_LOG_GROUP(group) cat_ ##group = log4c_category_get("myapp." #group)

проблема в том, что если мы передадим туда INIT_LOG_GROUP(g1.g2), то это развернется в cat_g1.g2 = ..., а переменная cat_g1 с членом g2 у нас, разумеется, не определена

можно ли сделать примерно так?:
INIT_LOG_GROUP(group) cat_ ##TR('.', '_', group) = log4c_category_get("myapp." #group)

код будет работать только под Linux и собираться только gcc, поэтому на переносимость пох.

Нет, но можно сделать так #define INIT_LOG_GROUP2(g1,g2) cat_ ##g1##_##g2 = log4c_category_get("myapp." #g1"."#g2)

Конечно не совсем то, что нужно, но тоже неплохо.

anonymous
()
Ответ на: комментарий от anonymous

я пробовал так, но там есть макрос:
LOG(SEVERITY, group, "message", arg1, arg2, ...)
сюда две группы уже проблематично вкрячить :(

BreadFan ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.