Hi. I have no idea what's going on here.
I understand that macros are used to paste code where the macro is located, and that they can take parameters in their use, but this exceeds me.
What I understand is that using macros first sets the header or signature of a function (GetTransitionTable), and inside, defines a static variable TRANSITION_TABLE, which is an array. With the following macro, TRANSITION_ENTRY, fill in the array, I suppose doing an implicit construction of objects, and converting the parameters into the objects expected by the potential object of each element of the array. Finally add a null element at the end.
Then, in the use of macros, pass the states they expect to fill in the array.
Do you basically use the macro to save writing much more repeated text than you would have to write if you didn't use it?
Is this use correct? In The C ++ Programming Language, Bjarne Stroustrup, apart from practically not addressing the issue, seems very contrary to the use of macros.
Thanks.

Used as:
