#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__宏在预编译时会替换成当前的源文件名
.__LINE__宏在预编译时会替换成当前的行号
.__FUNCTION__宏在预编译时会替换成当前的函数名称
有了以上这几个宏,特别是有了__VA_ARGS__,调试信息的输出就变得灵活多了。 作者:AimLay
链接:https://www.jianshu.com/p/c9df8a15d94e
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最新文章

  1. 总结的一些微信API接口
  2. 关于RichTextField2.0表情显示错乱的问题!
  3. Eclipse 各种小图标的含义
  4. eclipse 设置豆沙绿保护色,保护眼睛
  5. C# WinForm 中Console 重定向输出到ListBox控件中显示
  6. c#danliemosih
  7. 利用 Gitbook 生成文档中心站点
  8. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:4.安装Oracle RAC FAQ-4.4.无法图形化安装Grid Infrastructure
  9. JS中访问对象的属性
  10. bzoj 3435: [Wc2014]紫荆花之恋 替罪羊树维护点分治 && AC400
  11. 关于k-means聚类算法的matlab实现
  12. Windows 去掉启动时的放大镜
  13. We Chall-Training: Get Sourced-Writeup
  14. Centos更改镜像源
  15. Ubuntu+apt-get update时的源
  16. Python 3.3.2 round函数并非"四舍五入"
  17. springmvc 配置之 mvc:default-servlet-handler
  18. SqlServer2012,设置指定数据库对指定用户开放权限
  19. 数组实例的 copyWithin()
  20. 不存数据库的token验证

热门文章

  1. Jenkins使用一:CentOS7安装Jenkins
  2. 【ABAP系列】SAP ABAP常用正则表达式大全
  3. MySQL 1130错误,无法远程连接
  4. Linux 内核剖析
  5. ichunqiu在线挑战--网站综合渗透实验 writeup
  6. SQL根据日期计算当月有多少天(转)
  7. Excel 技巧
  8. 中标麒麟V6.0安装 mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
  9. python第一部分小结
  10. hdu6333 Problem B. Harvest of Apples(组合数+莫队)