用以下内容可以控制在debug版本中打印日志,而在release版本中不打印

#ifdef DEBUG
# define DBLog(format,...) NSLog((@"[%s][%s][%d]" format), __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DBLog(...);
#endif

备注:
1.ANSI C标准中有几个标准预定义宏(也是常用的):

__LINE__:在源代码中插入当前源代码行号;

__FILE__:在源文件中插入当前源文件名;

__DATE__:在源文件中插入当前的编译日期

__TIME__:在源文件中插入当前编译时间;

__STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1;

__cplusplus:当编写C++程序时该标识符被定义。
2.可变参数宏 ...和_ _VA_ARGS_ _
__VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。
实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。这样预定义宏_ _VA_ARGS_ _就可以被用在替换部分中,替换省略号所代表的字符串。

参考了http://www.cnblogs.com/lixiaohui-ambition/archive/2012/08/21/2649052.html

最新文章

  1. 使用nginx-http-concat优化网站响应
  2. 20145235 《Java程序设计》第8周学习总结
  3. C# 导出数据至 CSV
  4. rqnoj-396-SY学语文-dp
  5. GitHub安装失败
  6. 【REST API】
  7. hdoj 1513 Palindrome【LCS+滚动数组】
  8. ubuntu 下GIT的安装
  9. leetcode第一刷_Path Sum II
  10. Thinkphp3.2学习——架构_URL模式
  11. 浅析Python解释器的设计
  12. Java 工厂模式(一)— 抽象工厂(Abstract Factory)模式
  13. md5两次加密
  14. 关于tomcat WEB-INF/lib下类加载顺序
  15. Asp.Net项目与TCP服务端交互
  16. ML.NET 示例:深度学习之集成TensorFlow
  17. centos6安装配置zabbix3主控端
  18. array的方法 没记住的
  19. 读《SQL优化核心思想》:你不知道的优化技巧
  20. [置顶] 获取网络数据中的数组显示成ListView的简单流程

热门文章

  1. String类、正则表达式
  2. JavaWeb学习记录(十三)——商城购物之添加订单的数据库级联操作
  3. kuangbin_ShortPath K (POJ 3159)
  4. C++ Unicode SBCS 函数对照表
  5. 【转】IOS图像拉伸解决方案
  6. (转) ICCV 2015:21篇最火爆研究论文
  7. 矩阵的QR分解(三种方法)Python实现
  8. Opencv 3入门(毛星云)摘要
  9. 加快SQL连接速度
  10. 【转】ASP.NET的OnClientClick与OnClick事件【解决了“识别用户在对话框里面选yes或no的问题”】