C++11新特性学习笔记—变长参数的宏定义以及__VA_ARGS__
2017-11-03 10:03
357 查看
在C99标准中,我们就已经可以使用变长参数的宏定义。变长参数的宏定义是啥??就是在宏定义的参数列表的最后一个参数为省略号。而现在C++ 11 中,可以使用预定义宏__VA_ARGS__可以在宏定义的实现部分替换省略号所代表的字符串。
EX:
#include <stdio.h>
//定义LOG宏来记录代码位置中一些信息,程序员可以根据stderr产生的日志追索到代码中产生
//这些记录的位置。引入这样的特性,对于轻量级调试,简单的错误输出都是有积极意义的
#define LOG(...) {\
fprintf(stderr,"%s:line %d:\t",__FILE__,__LINE__);\
fprintf(stderr,__VA_ARGS__);\
fprintf(stderr,"\n");\
}
int main()
{
int x = 3;
LOG("x = %d",x);
}
EX:
#include <stdio.h>
//定义LOG宏来记录代码位置中一些信息,程序员可以根据stderr产生的日志追索到代码中产生
//这些记录的位置。引入这样的特性,对于轻量级调试,简单的错误输出都是有积极意义的
#define LOG(...) {\
fprintf(stderr,"%s:line %d:\t",__FILE__,__LINE__);\
fprintf(stderr,__VA_ARGS__);\
fprintf(stderr,"\n");\
}
int main()
{
int x = 3;
LOG("x = %d",x);
}
相关文章推荐
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
- 第60讲:Scala中隐式参数实战详解以及隐式参数在Spark中的应用源码解析学习笔记
- 2.关于结构体以及结构体数组作为函数入口参数的方法(学习笔记)
- 宏定义中的特殊参数(#、##、...和__VA_ARGS__)
- 深度学习笔记——Word2vec和Doc2vec训练实例以及参数解读
- JQuery学习笔记之JQuery效果hide、show以及toggle方法的callback参数
- C++11新特性学习笔记(二)
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
- 深度学习第二课 改善深层神经网络:超参数调试、正则化以及优化 第三周超参数调试+Batch normalization笔记和作业
- 黑马程序员_学习笔记7可变参数的应用及1.5增强for的联合使用以及反射的总结
- C++11新特性学习笔记之移动构造函数
- [Python学习笔记-004] 可变参数*args和**kwargs
- C++学习笔记16,C++11中的显式的默认构造函数以及显示删除默认构造函数
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week2优化算法
- 吴恩达-深度学习笔记《改善深层神经网络:超参数调试、正则化以及优化》
- STL学习笔记(二)——C++11新特性
- C++11新特性学习笔记—noexcept关键字
- JavaScript学习笔记第一天——定义函数以及参数调用
- 宏定义中的特殊参数(#、##、...和__VA_ARGS__)
- C++学习笔记之---参数特性