宏定义、NSLog我们经常用到,但系统默认的NSLog往往不能满足我们开发的需求。譬如以下开发常见自定义NSLog就可以帮助我们获取更多的相关信息。
1、自定义NSLog代码示例
1 | #ifdef DEBUG |
1 | #define NSLog(format, ...) \ |
2、如何控制调试/发布模式开关
1 | #ifdef DEBUG |
建议使用自定义Release/DEBUG 模式开关,如下:
1 | #warning 发布时,将APP_CUSTOM_DEBUG设置为0!!(0-发布 1-生产) |
3.相关参数释义
1)ifdef #ifndef #if…含义
#ifdef- If this macro is defined(该宏已定义)#ifndef- If this macro is not defined(该宏未定义)#if- Test if a compile time condition is true(如果一个编译时条件是真的)#else- The alternative for #if (选择-如果)#elif- #else an #if in one statement(#其他#如果一个语句)#endif- End preprocessor conditional(结束预处理条件)
2)宏定义参数释义
1、__FILE__ 宏在预编译时会替换成当前的源文件名
2、__LINE__ 宏在预编译时会替换成当前的行号
3、__FUNCTION__ 宏在预编译时会替换成当前的函数名称
4、__VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的”,“去掉的作用,否则会编译出错。
相关扩展阅读:
Swift Log https://gist.github.com/xmzio/fccd29fc945de7924b71