【第22期】观点:IT 行业加班,到底有没有价值?

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

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

自定义NSLog——彰显个性化

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

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

NSLog打印自定义对象

我们在开发中,如果直接使用NSLog打印对象,则会打印对象的指针(如下图) 但我们常常希望打印的是对象的属性的值,因此我们需要重写自定义类的description方法(打印日志时,对...

自定义NSLog宏输出

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

Swift自定义NSLog

Swift

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

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

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

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

NSLog自定义

#ifdef __OBJC__ #import #import #import "UIView+Extension.h" #import "UIBarButtonItem+...

NSLog自定义打印

在编写项目的时候会用到NSLog,这个帮助我们很多,可以检查结果是否是我们想要的。NSLog是xcode自带的,我们也可以将打印的名称改成自己喜欢的,比如改成JDDLog。只需要在你的pch文件里重新...
  • jdd92
  • jdd92
  • 2016-03-01 13:37
  • 101

自定义NSLog宏

// 自定义Log #define JKLog(...) NSLog(__VA_ARGS__)
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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