宏定义 # ## do{}while(0)使用
1、#使用
作用: #是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串。
举例:
#define PRINT(a) printf( #a ); PRINT(hello)========printf( "hello" )
2、##使用
作用: “##”是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。
举例:
#define _MENU(_a) _a
#define MENU(a) {_MENU(a), menu_output_##a, menu_input_##a },
MENU(main)========{main,menu_output_main,menu_input_main}
2、do{}while(0)使用
作用:
辅助定义复杂的宏,避免引用的时候出错
举例:
#define PRINT(a) do{\
if( flag ){\
printf( "\n\t" );\
printf( #a );\
printf( "\r\n" );\
}\
else{\
printf( "%-20s", #a );\
}\
}while( 0 );
|