栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++宏定义变参函数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++宏定义变参函数

在工作中,看到同事用c++写的宏定义变参函数,觉得挺炫酷的,所以,总结一下,后续也便于自己使用。当然,以下代码不涉及任何工作内容,只是简单的一个示范而已。所以内容也很简单。
#include 
#include 

using namespace std;

#define ONE_PARM(parm1)  printf("第一个参数为字符%-2cn",(parm1))
#define TWO_PARM(parm1, parm2)  printf("第一个参数为字符%-2c,第二个参数为整数%-5dn",(parm1),(parm2))
#define THREE_PARM(parm1, parm2, parm3) printf("第一个参数为字符%-2c,第二个参数为整数%-5d,第三个参数为字符串%-20sn",(parm1),(parm2),(parm3))

#define GET_PARM(_1,_2,_3,func,...) func

#define PRINTF(...) GET_PARM(__VA_ARGS__, THREE_PARM, TWO_PARM, ONE_PARM,...)(__VA_ARGS__)

int main(){
    int num=1;
    char ch='A';
    string str = "string";
    ONE_PARM(ch);
    TWO_PARM(ch,num);
    THREE_PARM(ch,num,str.c_str());
    PRINTF(ch);
    PRINTF(ch,num);
    PRINTF(ch,num,str.c_str());
    return 0;
}

代码结果:

第一个参数为字符A
第一个参数为字符A ,第二个参数为整数1
第一个参数为字符A ,第二个参数为整数1 ,第三个参数为字符串string
第一个参数为字符A
第一个参数为字符A ,第二个参数为整数1
第一个参数为字符A ,第二个参数为整数1 ,第三个参数为字符串string

对于上述的代码,我们定义了宏定义形式的变参函数PRINTF(),它可以接受1至3个参数,当然,这三个参数要符合宏定义中参数的形式,比如第一个必须时字符,第二个必须是整数,第三个必须是字符串,不然就会报错。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982858.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号