Для какой бы цели это ни было, вы можете достичь этого, используя несколько уровней макросов:
#define MAKE_VALS(...) MAKE_VALS1(..., __COUNTER__)
#define MAKE_VALS1(..., counter) MAKE_VALS2(..., counter)
#define MAKE_VALS2(..., counter) \
int val1##counter = 1; int val2##counter = 2; \
val1##counter = whatever; val2##counter = hunoz;
Таким образом, вы можете использовать MAKE_VALS
более одного раза в одной и той же области и для каждого вызова.создаст новый набор переменных.Обратите внимание, что без MAKE_VALS1
ваши переменные были бы названы val1__COUNTER__
и т. Д., А дополнительный уровень превращает их в фактическое число.
Это хорошее упражнение в написании макросов, но я согласен с парнями раньшеЯ спросил, является ли это правильным способом достичь того, чего вы пытаетесь достичь.Но об этом было сказано достаточно, поэтому я надеюсь, что это решит вашу проблему.