typeof关键字是C语言中的一个新扩展。只要可以接受typedef名称,Sun Studio C 编译器就可以接受带有typeof的结构,包括以下语法类别:
声明
函数声明符中的参数类型链表和返回类型
类型定义
类型操作符s
sizeof操作符
复合文字
typeof实参
编译器接受带双下划线的关键字:__typeof和__typeof__。本文中的例子并没有遵循使用双下划线的惯例。从语句构成上看,typeof关键字后带圆括号,其中包含类型或表达式的名称。这类似于sizeof关键字接受的操作数(与sizeof不同的是,位字段允许作为typeof实参,并被解释为相应的整数类型)。从语义上看,typeof 关键字将用做类型名(typedef名称)并指定类型。
使用typeof的声明示例
下面是两个等效声明,用于声明int类型的变量a。
typeof(int) a; /* Specifies variable a which is of the type int */
typeof('b') a; /* The same. typeof argument is an expression consisting of
character constant which has the type int */
以下示例用于声明指针和数组。为了进行对比,还给出了不带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用于表达式,则该表达式不会执行。只会得到该表达式的类型。以下示例声明了int类型的var变量,因为表达式foo()是int类型的。由于表达式不会被执行,所以不会调用foo函数。
extern int foo();
typeof(foo()) 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 = "a";
在宏声明中使用typeof
typeof构造的主要应用是用在宏定义中。可以使用typeof关键字来引用宏参数的类型。因此,在没有将类型名明确指定为宏实参的情况下,构造带有所需类型的对象是可能的。
原文来自于http://blogold.chinaunix.net/u3/101356/showart_2081601.html
分享到:
相关推荐
typeof关键字是C语言中的一个新扩展。在linux内核源代码中广泛使用。接下来通过本文给大家分享C语言中typeof关键字用法,需要的朋友参考下
JavaScript 函数语法详解 目录 一、普通函数二、箭头函数三·、数据包 JSON四、对象Object五、Promise六、Async : Await七、包总结 一、普通函数 二、箭头...使用 typeof 关键字可以查看函数类型。(这个理念和py
实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...
实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...
实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...
实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...
实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...
Javascript关键字(Reserved Words) Javascript关键字(Reserved Words)是指在Javascript语言中有特定含义,成为...break delete function return typeof case do if switch var catch else in this void continue
break do instanceof typeof case else new var catch finally return void continue for switch while debugger* function this with default if throw delete in try ECM
【教程简介】 javascript基础 javascript游戏开发之贪吃蛇项目 javascript高级 nodejs开发 nosql数据之Mongodb 【javascript基础】 01-javascript的概述.md 02-字面量和变量.md 03-数据类型和typeof操作符.md 04-...
typeof var void while with 保留字是为以后关键字而准备的 也不可以用来变量或者函数名。 代码如下: abstract boolean byte char class const debugger double enum export extends final float goto
Invocation 调用 调用一个函数将暂停当前函数的执行,传递控制权和参数给新函数。 实参与形参不一致不会导致运行时错误,多的被忽略,少的补为undefined ...this.value += typeof inc === 'number' ? inc : 1; } };
1前言提起JS的数据类型检测,大多数搞前端的朋友都知道有typeof和instanceof两个关键字可以用,其实还有另外2个方法constructor和Obje
underfined不是关键字,要让一个变量指向未定义或删除该变量,xxx = underfined是错误的写法,因为 underfined可以当成一个变量来定义,就是说var underfined = xxx这样是合法的,所以正确写法是使用void加上任何...
我们都知道在防止如block的循环引用时,会使用__weak关键字做如下定义: __weak typeof(self) weakSelf = self; 后来,为了方便,不用每次都要写这样一句固定代码,我们定义了宏: #define WeakSelf __weak typeof...
0048 typeof表达式的使用 23 0049 params关键字可以指定多参数 24 0050 using关键字的用法 24 0051 变量的作用域 25 2.5 其他 26 0052 有效使用this对象 26 0053 如何声明变量 26 0054 如何...
判断一个变量的类型尝尝会用 typeof 运算符而他毕竟有些缺陷,就是无论引用的是什么类型的对象,它都返回object,这时就要用到instanceof来检测某个对象是不是另一个对象的实例
本文实例讲述了jquery实现页面关键词高亮显示的方法。分享给大家供大家参考。... if(typeof(search) == ‘undefined’) return; var configs = jQuery.extend({ insensitive: 1, //是否匹配大小
将所需的属性,扩展,注释关键字,属性初始化程序转换为默认值。 您可以在或找到这些功能的。 用法 命令行 使用npm install typescript-json-schema -g 从打字稿类型生成模式: typescript-json-schema project/...