C语言,调试必备的DEBUG宏定义 #include <stdio.h> #include <stdarg.h> //仅仅是打印函数名字替换 DEBUG <--> printf #define DEBUG(format, ...) printf(format, ##__VA_ARGS__) //替换打印函数,在打印出来的内容加上前缀 #define XFUNC_PRINT(format, arg...) printf("XFUNC: " format "", #...
C语言,调试必备的DEBUG宏定义 1. #include <stdio.h>#include<stdarg.h>//仅仅是打印函数名字替换 DEBUG <--> printf#defineDEBUG(format, ...) printf(format, ##__VA_ARGS__)//替换打印函数,在打印出来的内容加上前缀#defineXFUNC_PRINT(format, arg...) printf("XFUNC: " format "", ##arg)/...
//#undef DEBUG #define PRINT(format, ...) printf(# format, ##__VA_ARGS__) // 定义一个宏连接两个参数 #define TOGETHER(x , y) x ## y static int DebugPrintf(const char * format, ...); static int DebugPrintf(const char * format, ...) { // 如果定义了插桩调试宏DEBUG,则 #if...
ps: 我们项目中一直存在一坨宏,也不知道谁加上去的2333 #ifdefDEBUG#defineDLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )#defineALog(fmt, ...) NSLog(...
在上述代码中,我们定义了一个 DEBUG 宏定义,它用于控制是否编译调试信息。在 main 函数中,我们使用了 #ifdef DEBUG 指令来判断是否定义了 DEBUG 宏定义,如果定义了,则输出调试信息;否则只输出正常信息。宏定义中的多行代码 在宏定义中可以使用 \ 换行符将多行代码合并为一行。例如:在上述代码中,我们定义了...
根据DEBUG宏的值来选择对应的打印宏函数。当DEBUG的值为1时启动相关的打印调试语句,DEBUG的值为0时则...
这样调试的信息只存在与插桩信息宏DEBUG的预处理指令下,如果需要打开调试信息就定义插桩信息宏DEBUG,否则就将插桩信息宏DEBUG注释掉(也可以undef或者删掉)。 这样我们的代码就变成 /* debug.c */ #include <stdio.h> #include <stdlib.h> /* 插桩信息宏 */ ...
这个指令告诉 CPP 只有当 MESSAGE 未定义时,才定义 MESSAGE。 #ifndef MESSAGE #define MESSAGE "You wish!" #endif 1. 2. 3. 这个指令告诉 CPP 如果定义了 DEBUG,则执行处理语句。在编译时,如果向 gcc 编译器传递了 -DDEBUG 开关选型,这个指令就非常有用。它定义了 DEBUG,可以在编译期间随时开启或关闭。
输出信息比较多,和“.debug_macro”有关的如下图所示:测试程序中定义的两个宏MONDAY和MAX的信息都...