泛型选择(简略)

发布时间:2023年12月28日

泛型编程指那些没有特定,但是一旦指定一种类型,就可以转换成指定类型的代码。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:标签匹配。

文章来源:https://blog.csdn.net/2303_80078385/article/details/135188392
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。