У меня есть макрос, который выглядит так:
M(id,...)
Я хотел бы, чтобы он расширялся до нуля, если id == 0
и что-то еще в противном случае.
Возможно ли это? Если да, то как?
Мой первый инстинкт заключался в том, чтобы попробовать что-то вроде этого:
#define M(id,...) M##id(__VA_ARGS__)
#define M0(...)
#define M_NOT_0(...) some_code(__VA_ARGS__)
Но последняя строка здесь явно недействительна, и я не могу понять, как заставить этот шаблон работать.
Примечания:
-
id
- целое число от 0 до 255, но в идеале я бы хотел избежать создания 256 отдельных макроопределений. - Пожалуйста, не оспаривайте предпосылку вопроса. Макрос
M(id,...)
не может быть изменен. - Никакие предположения о расширении окончательного кода могут быть сделаны.