泛型选择(简略)

泛型编程指那些没有特定,但是一旦指定一种类型,就可以转换成指定类型的代码。C11新增了一种表达式,叫作泛型选择表达式,可根据表达式的类型(即表达式的类型是int、double还是其他类型)选择一个值。泛型选择表达式不是预处理器指令,但是在有一些泛型编程中它常用作#define宏定义的一部分。

_Generic(x,int: 0,float: 1,double: 2,default: 3)

_Generic 是C11的关键字。_Generic后面的圆括号中包含多个用逗号分隔的项。第1个项是一个表达式,后面的每个项都由一个类型、一个冒号和一个值组成,如 float: 1.第1个项的类型匹配哪个标签,整个表达式的值是该标签后面的值。   例如,假设上面的表达式中x是int类型的变量,x的类型匹配int:标签,那么整个表达式的值就是0.  如果没有与类型匹配的标签,表达式的值就是default:标签后面的值.

下面是一个把泛型选择语句和宏定义组合的例子:

#define MY(X) _Generic((X),\
    int: "int",\
    float: "float",\
)

宏必须定义为一条逻辑行,但是可以用、把一条逻辑行分隔成多条物理行。像这种情况,对泛型表达式求值得字符串。  例如,对MY(5)求值得“int”,因为值5的类型与int:标签匹配。

 

C语言实现泛型编程

https://www.runoob.com/w3cnote/c-general-function.html

  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值