debug 时可以使用log 宏来来查找;
#include<stdio.h>
#ifdef DEBUG
#define log(frm, args...) {\ // frm 为格式, args 为变参列表;
printf("[%s : %s : %d] ", __FILE__, __func__, __LINE__);\
printf(frm,##args);\ //## ,两个##表示连接;
printf("\n");\
}
#else
#define log(frm, args...)
#endif
#define contact(a,b) a##b // 将a 和 b 连接在一起;
int main() {
int a = 123;
int b = 234;
int abc, def;
int abcdef = 0;
printf ("[%s : %s : %d] a = %d\n", __FILE__, __func__, __LINE__, a);
log("b = %d", b);
printf ("Hello world\n");
log ("Hello world");
contact(abc, def) = 112233;
log ("%d", abcdef);
return 0;
}
当debug 完成之后,可以使用条件式编译;
#ifdef DEBUG
如果定义了debug 宏, 则往下执行,否则执行#else 后面的语句;
没有定义DEBUG时,log 宏不会被执行,可在#ifdef DEBUG 前加上 #define DEBUG;
也可直接编译,gcc -DDEBUG log.c