C语言重载宏函数的小技巧
来源:互联网 发布:rsyslog linux 编辑:程序博客网 时间:2024/05/16 01:57
在写C/C++语言时我们经常会用到宏定义,宏函数就是带参数的宏定义(blablabla……省去背景介绍)。
有时候我们会需要一个可以有多种参数版本的宏定义,例如:
但是宏定义不像正规函数那样可以重载,一旦试图重复定义一个已经定义的宏,就会把之前的定义覆盖掉。那么怎么正确的重载宏函数呢?
首先需要了解可变参数宏__VA_ARGS__,__VA_ARGS__可以将宏中的参数…展开,例如:
现在,见证奇迹的时候到了,以重载可以有一个或者两个参数的宏函数为例:
tada!是不是没有反应过来这有什么用呢?我们来测试一下这个宏定义是如何工作的,首先来看一个参数的情况:
Macro(a)
=>GetMacro(a, TwoArguments, OneArgument)
=>OneArgument(a)
两个参数的情况:
Macro(a, b)
=>GetMacro(a, b, TwoArguments, OneArgument)
=>TwoArgument(a, b)
很巧妙的实现了宏函数的重载功能,那么怎么实现三个参数的重载呢,同理:
博客源地址:http://blog.nemoge.com/trick-for-overload-macro-function-in-c/
阅读全文
0 0
- C语言重载宏函数的小技巧
- C语言使用技巧3:C++中子类调用父类重载函数的方法
- C语言是实现函数的重载
- c 语言小技巧
- C语言小技巧
- c语言小技巧
- c 语言小技巧
- C语言小技巧
- 【C语言用法】C语言的函数“重载”
- C语言的偏方:小技巧而已
- C语言的小算法技巧
- c语言模拟函数重载
- C语言实现函数重载
- C语言的重载
- C语言的一些小技巧 小知识
- c语言编程小技巧:c语言小技巧:枚举
- C语言小函数
- C语言小函数
- # Unity EditorTool Dev Tutorial(三)——数据存储工具
- IT公司速查手册的各大IT公司薪资和待遇内幕
- JSP、Servlet中的相对路径和绝对路径 页面跳转问题
- 微博产品经理亲自解答:为什么微博不像微信一样简洁?
- Coursera Machine Learning 作业代码 week3
- C语言重载宏函数的小技巧
- PAT乙级(Basic Level)练习题 母牛的故事
- python中yield的用法
- EntityFramework Model有外键时,Json提示循环引用 解决方法
- letcode278[easy]--First Bad Version
- 时间复杂度的计算问题
- 洛谷P3391
- 插件化开发之-gradle分包
- 案例-小球自由落体运动