`
womendu
  • 浏览: 1483555 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

typeof关键字简介

 
阅读更多

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

分享到:
评论

相关推荐

    浅析C语言中typeof关键字用法

    typeof关键字是C语言中的一个新扩展。在linux内核源代码中广泛使用。接下来通过本文给大家分享C语言中typeof关键字用法,需要的朋友参考下

    【JavaScript源代码】JavaScript  函数语法详解.docx

    JavaScript 函数语法详解  目录 一、普通函数二、箭头函数三·、数据包 JSON四、对象Object五、Promise六、Async : Await七、包总结 一、普通函数 二、箭头...使用 typeof 关键字可以查看函数类型。(这个理念和py

    C#开发实战1200例+第1卷(1).part05

    实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...

    C#开发实战1200例+第1卷(1).part03

    实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...

    C#开发实战1200例+第1卷(1).part04

    实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...

    C#开发实战1200例+第1卷(1).part01

    实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...

    C#开发实战1200例+第1卷(1).part02

    实例020 使用条件运算符判断指定年份 是不是闰年 25 实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27 实例022 使用checked关键字处理“溢出”错误 27 实例023 使用typeof关键字获取类的内部结构 28 ...

    javascript 常用关键字列表集合

    Javascript关键字(Reserved Words) Javascript关键字(Reserved Words)是指在Javascript语言中有特定含义,成为...break delete function return typeof case do if switch var catch else in this void continue

    Javascript中的关键字和保留字整理

    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

    jsjavascript基础教程.zip

    【教程简介】 javascript基础 javascript游戏开发之贪吃蛇项目 javascript高级 nodejs开发 nosql数据之Mongodb 【javascript基础】 01-javascript的概述.md 02-字面量和变量.md 03-数据类型和typeof操作符.md 04-...

    Javascript基础教程之关键字和保留字汇总

    typeof var void while with 保留字是为以后关键字而准备的 也不可以用来变量或者函数名。 代码如下: abstract boolean byte char class const debugger double enum export extends final float goto

    JavaScript调用模式与this关键字绑定的关系

    Invocation 调用 调用一个函数将暂停当前函数的执行,传递控制权和参数给新函数。 实参与形参不一致不会导致运行时错误,多的被忽略,少的补为undefined ...this.value += typeof inc === 'number' ? inc : 1; } };

    blateyang#FrontEndNotes#JS数据类型检测的坑和通用检测方法1

    1前言提起JS的数据类型检测,大多数搞前端的朋友都知道有typeof和instanceof两个关键字可以用,其实还有另外2个方法constructor和Obje

    Java版水果管理系统源码-jsnote:前端笔记

    underfined不是关键字,要让一个变量指向未定义或删除该变量,xxx = underfined是错误的写法,因为 underfined可以当成一个变量来定义,就是说var underfined = xxx这样是合法的,所以正确写法是使用void加上任何...

    iOS开发技巧之WeakSelf宏的进化详解

    我们都知道在防止如block的循环引用时,会使用__weak关键字做如下定义: __weak typeof(self) weakSelf = self; 后来,为了方便,不用每次都要写这样一句固定代码,我们定义了宏: #define WeakSelf __weak typeof...

    C#经验技巧宝典1-5

    0048 typeof表达式的使用 23 0049 params关键字可以指定多参数 24 0050 using关键字的用法 24 0051 变量的作用域 25 2.5 其他 26 0052 有效使用this对象 26 0053 如何声明变量 26 0054 如何...

    JavaScript instanceof 的使用方法示例介绍

    判断一个变量的类型尝尝会用 typeof 运算符而他毕竟有些缺陷,就是无论引用的是什么类型的对象,它都返回object,这时就要用到instanceof来检测某个对象是不是另一个对象的实例

    jquery实现页面关键词高亮显示的方法

    本文实例讲述了jquery实现页面关键词高亮显示的方法。分享给大家供大家参考。... if(typeof(search) == ‘undefined’) return;  var configs = jQuery.extend({  insensitive: 1, //是否匹配大小

    typescript-json-schema:从您的Typescript来源生成json模式

    将所需的属性,扩展,注释关键字,属性初始化程序转换为默认值。 您可以在或找到这些功能的。 用法 命令行 使用npm install typescript-json-schema -g 从打字稿类型生成模式: typescript-json-schema project/...

Global site tag (gtag.js) - Google Analytics