可变参数宏(用于调试)
来源:互联网 发布:dg加密软件 编辑:程序博客网 时间:2024/05/21 12:43
这个是在这里看到的(包括这个代码, 我自己理解了下,记一下)
http://blog.csdn.net/hinyunsin/article/details/6546670
#include <stdio.h> #define __DEBUG__ #ifdef __DEBUG__ #define DEBUG(format, ...) printf("文件:"__FILE__ "\n行号:%d\n输出:"format"\n", __LINE__, ##__VA_ARGS__) #else #define DEBUG(format, ...) #endif int main(int argc, char **argv) { char str[] = "Hello World"; float a = 889.5; DEBUG("A ha, check me: %s%.2f", str, a); return 0;}
运行测试输出结果:
原始的测试行: #define DEBUG(format,...) printf("File: "__FILE__"\nLine: %05d \n"format"\n", __LINE__, ##__VA_ARGS__)
%05d 输出占5格,前面不足的,补零.如果%5d,占5格,不足的空格.
format
参数名, 前后相同就行了,__VA_ARGS__
是可变参数宏, 宏参数对应前面的三个点(省略号),##
的意思是,如果可变参数(format, 就是后面的%s)被忽略或为空,将使预处理器(preprocessor )去除掉它前面的那个逗号删除逗号: http://blog.csdn.net/jinzhilong580231/article/details/8774259
http://blog.csdn.net/hinyunsin/article/details/6546670
__LINE__
:在源代码中插入当前源代码行号;__FILE__
:在源文件中插入当前源文件名;
http://blog.chinaunix.net/uid-22878837-id-2110544.html另外:
...
只能放最后.
经测试, format 只能放第一个逗号前,且挨着逗号,...
和对应的_VA_ARGS_
只能放在最后
也不用管多了, 就按照这个格式来就是了.
0 0
- 可变参数宏(用于调试)
- 一个用于传递可变参数的宏
- 可变参数宏----调试工具
- 可变参数宏输出调试信息
- C中可变参数宏实现调试打印
- 可变参数函数 可变参数宏
- stdarg.h——用于函数接受可变参数
- 优化打印调试信息(可变参数)
- 可变参数应用在调试信息输出
- 可变参数宏
- 可变参数宏
- 可变参数宏
- 可变参数宏
- C可变参数宏
- 可变参数宏
- C宏 可变参数
- 可变参数的宏
- 可变参数宏
- MATLAB读取数据文件
- 集合和[]的一些问题
- 王学岗RxJava(三)
- 关系运算
- ios初学练习
- 可变参数宏(用于调试)
- uva 532
- 实现一个自己的网络浏览器
- 逻辑运算
- bzoj 2721: [Violet 5]樱花 线性筛
- 【Hibernate】---- 锁
- 数组实现大数四则运算
- java学习(8)
- 《利用Python进行数据分析》第二章pivot_table报错问题