// This should produce THIS_IS_THE_MACRO_ARG and not THIS_IS_THE_DEFINE. #define x THIS_IS_THE_DEFINE #define b(x) x #define z(x) b(x) float z(THIS_IS_THE_MACRO_ARG) ; float4 main() : COLOR { return THIS_IS_THE_MACRO_ARG; }