精华内容
下载资源
问答
  • C语言typeof

    2015-03-12 11:37:15
    typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。 一,说明  typeof的参数可以是两种形式:表达式或类型。  1,表达式的的例子:  typeof(x[0](1))  这里假设x是一个函数指针...
     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;

    局限

        typeof构造中的类型名不能包含存储类说明符,如externstatic。不过允许包含类型限定符,如constvolatile
        例如,下列代码是无效的,因为它在typeof构造中声明了extern:
            typeof(extern int) a;
    展开全文
  • c语言typeof关键字(GCC) typeof关键字是C语言中的一个新扩展。 typeof的参数可以是两种形式:表达式或类型。 下面是使用表达式的的例子: typeof(x[ 0 ](1)) 这里假设x是一个函数指针数组,这样就可以得到这个函数...

    c语言typeof关键字(GCC)

    typeof关键字是C语言中的一个新扩展。

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

    下面是用类型作参数的例子:
    typeof(int *) a,b;
    等价于:
    int *a,*b;

    下面是两个等效声明,用于声明int类型的变量a。
    typeof(int) a; /int类型/
    typeof(‘b’) a; /* GCC中这个表达式的类型是int(自动提升为int),
    注意typeof(char)和typeof(‘b’)得到的不是一样的,这个用sizeof可以看出来*/

    一般情况下用typeof就可以了,但是如果要于ISO C兼容的话,最好是用双下划线的形式:typeof
    typeof和typedef很像,事实上,只要能用typedef的地方就可以用typeof。

    下面是另外一些例子:
    把y定义成x指向的数据类型:
    typeof(*x) y;
    把y定义成x指向数据类型的数组:
    typeof(*x) y[4];
    把y定义成一个字符指针数组:
    typeof(typeof(char *)[4] y;
    这与下面的定义等价:
    char *y[4];

    我们再换一种定义方式:
    #define pointer(T) typeof(T *)
    #define array(T,N) typeof(T [N])
    array (pointer(char),4) y;

    如果想把T定义成一个表达式的类型,则我们仅仅用typedef无法做到
    但可以通过typeof做到:
    typdef typeof(expr) T;

    使用typeof的声明示例
    以下示例用于声明指针和数组。为了进行对比,还给出了不带typeof的等效声明。
    typeof(int ) p1,p2; / Declares two int pointers p1, p2 */
    int *p1, *p2;

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

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

    int a1[10], a2[10];

    使用typeof的声明限制
    请注意,typeof构造中的类型名不能包含存储类说明符,如extern或static。不过允许包含类型限定符,如const或volatile。
    例如,下列代码是无效的,因为它在typeof构造中声明了extern:
    typeof(extern int) a;

    下列代码使用外部链接来声明标识符b是有效的,表示一个int类型的对象。下一个声明也是有效的,它声明了一个使用const限定符的char类型指针,表示指针p不能被修改。
    extern typeof(int) b;
    typeof(char * const) p = “a”;

    在宏声明中使用typeof
    typeof构造的主要应用是用在宏定义中。可以使用typeof关键字来引用宏参数的类型。因此,在没有将类型名明确指定为宏实参的情况下,构造带有所需类型的对象是可能的。
    下面是一个交换两个变量的值的宏定义:
    #define SWAP(a,b) {
    typeof(a) _t=a;
    a=b;
    b=_t;}
    这个宏可以交换所有基本数据类型的变量(整数,字符,结构等)

    参考:
    http://blog.chinaunix.net/u3/101356/showart_2081601.html
    http://gcc.gnu.org/onlinedocs/gcc/Typeof.html#Typeof

    展开全文
  • c语言 typeof关键字

    2018-01-25 09:42:54
    c语言typeof关键字 下面这两个等效声明,用于声明int类弄的变量a typeof(int) a; typeof('b') a; //相当于获取'b'的类型,定义一个变量a 下面用于声明指针和数组 typeof(int*) p1,p2; typeof(p1

    转载:http://blog.csdn.net/u012385733/article/details/38370007

    c语言中typeof关键字

    下面这两个等效声明,用于声明int类弄的变量a
    typeof(int) a;
    typeof('b') a; //相当于获取'b'的类型,定义一个变量a

    下面用于声明指针和数组
    typeof(int*) p1,p2;
    typeof(p1) p2  //p1与p2的类型一致
    int *p1,*p2;

    typeof(int [10]) a1,a2;
    int a1[10],a2[10];

    如果将typeof用于表达式,则该表达式不会执行,只会得到表达式的类型,以下示例声明了int类型的var变量,因为表达式foo()是int类型的,由于表达式不会被执行,所以不用调用foo()函数
    extern int foo();
    typeof(foo()) var; //相当于等同去int var;


    使用typeof的声明限制
    typeof构造中的类型名不能包含存储类说明符,如
    extern或static.不过允许包含类型限定符,
    如const或volatile.例如,下列代码是无效的.因为它在typeof构造中声明了extern;
    typeof(extern int) a;

    下列代码使用外部链接来声明标识符b是有效的,表示一个int类型的对象.下一个声明也是有效的,它声明了一个使用const限定符的char类型指针,表示指针p不能被修改.


    extern typeof(int) b;
    typeof(char*const) p;//常指针,不能修改指针指向;
    在宏声明中使用typeof

    typeof构造的主要应用是用在宏定义中。可以使用typeof关键字来引用宏参数的类型。
    展开全文
  • C语言typeof详解

    千次阅读 2018-10-18 14:57:40
     typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。一,说明  typeof的参数可以是两种形式:表达式或类型。  1,表达式的的例子:  typeof(x[0](1)  这里假设x是一个函数指针数组,这.....

    转自:https://www.cnblogs.com/likewithyou/p/5836551.html

    前言:
        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;

    展开全文
  • C语言 typeof关键字

    2017-09-12 16:21:02
    int a; typeof(a) b; 等同于 int b;
  • C语言typeof详解 offsetof

    2016-03-01 14:55:00
    前言:typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。一,说明typeof的参数可以是两种形式:表达式或类型。 1,表达式的的例子:typeof(x[0](1)这里假设x是一个函数指针数组,这样...
  • 一、typeof 作用: 获取变量类型 typeof(a) struct test { int a; }; struct test st1; typeof(st1) st2; st2.a = 33; printf("a = %d\n", st2.a); 二、size_t size_t是一些C/C++标准在stddef.h中...
  • typeof 是 GNU C 标准里特有的扩展,标准的 ISO C 并没有这个关键字,所以在编译的时候不能加任何 ISO 的 C 标准选项,否则会报错。使用时加入-std=gnu90 即 GNU 的标准即可。typeof的作用类似与sizeof,区别在于...
  • GNU 中C语言 typeof关键字例解

    千次阅读 2012-12-25 19:30:18
    前言:计算机语言是编译器和程序员交流的依据和规范,GNU C是GCC特有的功能,在Linux内核中被广泛应用。 ...   ... 关键字typeof用于获取表达式的数据类型。  简单例子,如清单1:  [cpp
  • 熟悉下typeof返回6种数据格式。typeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。typeof 共返回6种数据格式:1、object2、undefined3、string4、...
  • 任意值通过 reflect.TypeOf() 获得反射对象信息后,如果它的类型是结构体,可以通过反射值对象(reflect.Type)的 NumField() 和 Field() 方法获得结构体成员的详细信息。与成员获取相关的 reflect.Type 的方法如下表...
  • typeof关键字是C语言中的一个新扩展。在linux内核源代码中广泛使用。接下来通过本文给大家分享C语言typeof关键字用法,需要的朋友参考下
  • 浅析C语言typeof关键字用法前言C语言typeof 关键字是用来定义变量数据类型的。在linux内核源代码中广泛使用。下面是Linux内核源代码中一个关于typeof实例:#define min(x, y) ({ \typeof(x) _min1 = (x); \...
  • C语言typeof关键字

    2020-04-05 21:31:42
    c语言typeof关键字,是C语言中的一个新扩展。typeof的参数可以是两种形式:表达式或类型。 下面这两个等效声明,用于声明int类弄的变量a typeof(int) a; typeof('b') a; //相当于获取'b'的类型,定义一个变量a // GCC...
  • 这个关键字typeof在linux内核里面使用非常广泛!下面这两个等效声明,用于声明int类弄的变量atypeof(int) a;typeof('b') a; //相当于获取'b'的类型,定义一个变量a下面用于声明指针和数组typeof(int*) p1,p2;typeof(p1...
  • 运算符关键字typeof的使用引导语:C语言是一种计算机程序设计语言,它既具有 高级语言的特点,又具有 汇编语言的特点。以下是小编整理的运算符关键字typeof的'使用,欢迎参考阅读!用于获取类型的 System.Type 对象。...
  • c语言typeof关键字

    2018-11-05 17:59:59
    c语言typeof关键字 下面这两个等效声明,用于声明int类弄的变量a typeof(int) a; typeof('b') a; //相当于获取'b'的类型,定义一个变量a 下面用于声明指针和数组 typeof(int*) p1,p2; typeof(p1) p2 //p1与p2的类型...
  • C语言typeof

    2013-09-25 17:21:43
    语言中的typeof关键字 ...typeof关键字是C语言中的一个新扩展。 typeof的参数可以是两种形式:表达式或类型。 下面是使用表达式的的例子:  typeof(x[0](1) 这里假设x是一个函数指针数组,
  • C语言typeof关键字

    2017-12-28 13:55:39
    直接从别人的部分例子拿过来,不知道算不算引用,还是加一下吧 ... ...使用typeof的声明示例 下面是两个等效声明,用于声明int类型的变量a。 typeof(int) a; /* Specifies variable a whic

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,274
精华内容 3,309
关键字:

c语言typeof

c语言 订阅