Можно ли перебирать аргументы в вариационных макросах?

Мне было интересно, можно ли перебирать аргументы, передаваемые в 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;
}

Ответы на вопрос(9)

Ваш ответ на вопрос