Можно ли перебирать аргументы в вариационных макросах?
Мне было интересно, можно ли перебирать аргументы, передаваемые в variadic макрос в C99 или используя какие-либо расширения GCC?
Например, Можно ли написать общий макрос, который принимает структуру и ее поля передаются в качестве аргументов и печатает смещение каждого поля в структуре?
Что-то вроде этого:
struct a { int a; int b; int c; }; /* PRN_STRUCT_OFFSETS will print offset of each of the fields within structure passed as the first argument. */ int main(int argc, char *argv[]) { PRN_STRUCT_OFFSETS(struct a, a, b, c); return 0; }