iOS 自定义NSLog

原创 2016年06月01日 12:14:25
//第一种
#ifdef DEBUG
#define CLog(format, ...) NSLog(format, ## __VA_ARGS__)
#else
#define CLog(format, ...)
#endif


// 第二种
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"[文件名:%s]\n" "[函数名:%s]\n" "[行号:%d] \n" fmt), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...);
#endif


参数解释:

__VA_ARGS__是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错, 你可以试试。

__FILE__宏在预编译时会替换成当前的源文件名

3.__LINE__宏在预编译时会替换成当前的行号

4.__FUNCTION__宏在预编译时会替换成当前的函数名称

有了以上这几个宏,特别是有了__VA_ARGS__,调试信息的输出就变得灵活多了。



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

自定义NSLog——彰显个性化

项目调试过程中,有两大神器。一是断点,二是Log。而工程中出现的大量Log输出,在发布版本时是需要注释掉的。一方面是因为可能会暴露APP里的保密数据,另一方面也是最主要的原因就是它会占用时间和设备资源...

OC NSLog 打印格式 自定义 时间戳

oc 中 NSLog打印 1.我们在调试阶段一般需要在控制台打印一些信息,在发布的时候 ,不希望打印。 2.有时不希望信息简单些,不需要时间戳之类的信息, 3.或者想打印自己想要的信息,需要自定...

自定义输出宏替代NSLog

开发过程中,难免会使用NSLog来打印信息用于调试,但releae的软件却不能包含NSLog,否则有被打回的风险,但难道要在发布前把全部的NSLog都注释掉?那后续的调试呢? 下面,我们可以采用自定...

iOS:你真的理解你在用的自定义NSLog吗?

自定义NSLog 我们在调试程序的时候,往往需要输出一些日志信息,用到NSLog函数,当我们准备发布程序,需要注释掉NSLog代码,这个时候往往会定义一个宏,在调试的时候,会输出日志,在Releas...

自定义NSLog宏输出

我们在调试程序的时候,需要输出一些日志信息,用到NSLog函数,当我们准备发布程序,需要注释掉NSLog代码,这个时候在PrefixHeader.pch文件中定义宏,在调试的时候,输出日志,在Rele...

IOS NSlog处理

  • 2017-04-12 09:12
  • 63KB
  • 下载

12.iOS格式化日志输出的方法以及在发布状态自动关闭NSLog方法

1.自定义类的格式化日志输出         当我们自定义一个类,需要打印该类对应的对象信息时,往往只能打印出他们的内存,如果我们想打印出我们想看到的一些数据成员就必须要一一打印,这样往往比较麻烦。所...

iOS 自定义TabBar

  • 2017-09-14 16:04
  • 877KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)