请问一个关于宏的有关问题

请教一个关于宏的问题#ifdefNDEBUG#defineTRACE(S)S#else#defineTRACE(S)printf( %s\n ,#S)S#endif问:

请教一个关于宏的问题
#ifdef   NDEBUG
#define   TRACE(S)   S
#else
#define   TRACE(S)   printf( "%s;\n ",   #S);   S
#endif  
问:以上TRACE()宏的作用是什么?

[解决办法]
#define TRACE(S) S // 定义了一个代形参的宏(TRACE(s)),后面的S就是它的形参
#define TRACE(S) printf( "%s;\n ", #S); S //定义宏的表达式是printf( "%s;\n ", #S);
下次要打印一个字符串w[]时可以这样写:
TRACE(w)