[应用相关] C语言typeof详解

[复制链接]
697|14
 楼主| janewood 发表于 2023-9-30 07:00 | 显示全部楼层 |阅读模式
前言:
    typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。

一,说明
    typeof的参数可以是两种形式:表达式类型

    1,表达式的的例子:
        typeof(x[0](1)
        这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。
        如果将typeof用于表达式,则该表达式不会执行。只会得到该表达式的类型。
        以下示例声明了int类型的var变量,因为表达式foo()是int类型的。由于表达式不会被执行,所以不会调用foo函数。
            extern int foo();
            typeof(foo()) var;

    2,参数的例子:
        typeof(int *) a,b;
            等价于:
            int *a,*b;


二,实例
    1,把y定义成x指向的数据类型:
           typeof(*x) y;
    2,把y定义成x指向数据类型的数组:
           typeof(*x) y[4];
    3,把y定义成一个字符指针数组:
            typeof(typeof(char *)[4] y;
    这与下面的定义等价:
            char *y[4];

    4,typeof(int *) p1,p2; /* Declares two int pointers p1, p2 */
            int *p1, *p2;

    5,typeof(int) *p3,p4;/* Declares int pointer p3 and int p4 */
            int *p3, p4;

    6,typeof(int [10]) a1, a2;/* Declares two arrays of integers */
            int a1[10], a2[10];


,局限
    typeof构造中的类型名不能包含存储类说明符,如externstatic。不过允许包含类型限定符,如constvolatile
    例如,下列代码是无效的,因为它在typeof构造中声明了extern:
        typeof(extern int) a;
Stahan 发表于 2023-9-30 10:40 | 显示全部楼层
自定义类型也可以用吗?
中国龙芯CDX 发表于 2024-4-29 08:37 | 显示全部楼层
typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。
yellow555 发表于 2024-4-29 15:41 来自手机 | 显示全部楼层
在typeof构造中声明了extern就会无效吗?
芯路例程 发表于 2024-4-29 15:43 | 显示全部楼层
没用过这个函数,这个特性挺抽象得。
AIsignel 发表于 2024-4-29 16:10 | 显示全部楼层
这个函数在C++几可以用得?
帛灿灿 发表于 2024-9-6 07:11 | 显示全部楼层

JUnit(用于 Java)、SUnit(用于 Smalltalk)和 CppUnit(用于 C++)等框架提供了丰富的功能集
Bblythe 发表于 2024-9-6 08:14 | 显示全部楼层

通过输入和输出电流环“逃逸”到外面环境中
周半梅 发表于 2024-9-6 10:10 | 显示全部楼层

一种了解状态变化的简单方法
Pulitzer 发表于 2024-9-6 11:13 | 显示全部楼层

输入环路通过近似直流的电流对输入电容充电
Wordsworth 发表于 2024-9-6 14:12 | 显示全部楼层

接收到的RF(射频)能量越大
Clyde011 发表于 2024-9-6 15:15 | 显示全部楼层

错误的比较大的Ⅵ乘积结果
公羊子丹 发表于 2024-9-6 16:08 | 显示全部楼层

定时器输出引脚的设定
万图 发表于 2024-9-6 17:11 | 显示全部楼层

关系到它们的频率响应
Uriah 发表于 2024-9-6 18:14 | 显示全部楼层

使它们之间的电流通路尽可能短
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

1587

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
0