#define DEBUG_SWITCH 0 // 1是打开打印,0是关闭打印#if DEBUG_SWITCH#define PRINT_DEBUG printf #else#define PRINT_DEBUG //#endifintmain(){PRINT_DEBUG("This program is being debugged!\n");return0;}
2. 用宏定义拼接字符串
#define STRING "ABCD"intmain(){printf("This program is "STRING" being debugged!\n");return0;}
3. 宏定义中的 “#” ,"##" 的作用
#define MARK_PASTE(x,y) x##y // 记号粘贴操作符#define STRING(x,y) #x#y // 字符串化操作符intfun_yyh(){return0;}intmain(){// 1. ##作用: m##n ---> mn 1##2 --> 12printf("This program is run value = %d\n",MARK_PASTE(1,20));// 2. #作用: #m#n ---> "mn" #1#2 --> "12"printf("This program is run value = %s\n",STRING(1,20));// 3. ##可以拼接函数名然后进行调用printf("%d\n",MARK_PASTE(fun_,yyh)());// 相当于fun_yyh()return0;}
打印情况:
This program is run value =120
This program is run value =1200
总结:
##: 用来连接记号,1##2 即为 数字12
# : 用来将记号转换为字符串, #1#2 即为字符串 "12", #1 为"1",#2为 "2"
1. 用宏定义打开或关闭打印#define DEBUG_SWITCH 0 // 1是打开打印,0是关闭打印#if DEBUG_SWITCH#define PRINT_DEBUG printf #else #define PRINT_DEBUG //#endif int main(){ PRINT_DEBUG("This program is being debugged...