#define EXPR(unused, x, data) \
    case x: my_func(BOOST_PP_TUPLE_ELEM(2, 0, data) , offsetof(my_struct, arr[x].BOOST_PP_TUPLE_ELEM(2, 1, data)))); break;
     
    #define MY_MACRO(x, arg, my_field) \
    switch(i)\
    {\
    BOOST_PP_REPEAT(x, EXPR, (arg, my_field))\
    }
 
 
 
Great. PP_TUPLE was exactly was I needed.
 
Thanks a lot.