Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all articles
Browse latest Browse all 73832

Цикл для макросов

$
0
0

Здравствуйте. Я сразу к перейду к примеру:

#define SS(name, val) name=val
#define CR_ENUM(name, val, ...)   \
enum E{                           \
  name=val,                       \  
  SS(__VA_ARGS__)                 \
};
 
int main() {
    CR_ENUM(wen, 1, qq, 4)
}
Т.е. мы создали перечисление, где wen = 1 и qq = 4. Отлично, но что если кол-во членов в перечислении будет больше? Хотелось бы написать что-то такое:
#define SS(name, val, ...)   \
name=val                     \
SS(__VA_ARGS__)              \

#define CR_ENUM(name, val, ...)    \
enum E{                            \
  name=val,                        \
  SS(__VA_ARGS__)                  \
};
Организавать рекурсию. Типа как у шаблонов. Важно - не привязывать жёстко к кол-ву аргументов, а сделать в ... стиле. Реально ли?

 , ,


Viewing all articles
Browse latest Browse all 73832

Trending Articles