• 摘要:__typeof__()和__typeof()和typeof()都是C的扩展,且意思是相同的,标准C不包括这样的运算符标准C:ANSIC,ISOC,StandardCC89C99C11这些其实都是一个东西,只是不同时期的叫法。GNUC:(革奴C)支持标准C的基础上做了一些C扩展在标准C中写扩展是以__开头,所以在标准C中要写成__typeof()或__typeof__()在GNUC中支持直接写typeof()或者__typeof()或者__typeof__()iOS使用Cla
  • __typeof__()和 __typeof()和 typeof() 都是 C 的扩展,且意思是相同的,标准C不包括这样的运算符

    标准C: ANSI C ,ISO C, Standard C C89 C99 C11 这些其实都是一个东西,只是不同时期的叫法。

    GNU C: (革奴 C) 支持标准C的基础上做了一些C扩展

    在标准C 中写扩展是 以 __ 开头,所以在标准C中要写成 __typeof() 或 __typeof__()

    在GNU C 中支持直接写 typeof() 或者 __typeof() 或者 __typeof__()

    iOS 使用Clang编译器,默认用的C语言版本是GNU99 ,并且允许'asm'inline''typeof'的选项设置为Yes。

    因此使用typeof() 完全ok。

    如果以后用于编译的C语言版本 不是GNU C了,你就炸了。直接报错

    做个简单的验证:

    1.Xcode中新建一个命令行项目 (注意创建项目时,语言选的是C语言,不是OC。 如果选择OC创建OC项目的话,当选择标准C的时候,系统的有些类就直接报错,看不到typeof的错误),(下图,可以看到默认是GNU99 )

    2.在main.m中写 typeof(),cmd + R 正确运行,控制台打印。

    3.将Xcode中的 GNU C 设置 成 标准C

    运行后发现报错了

    总结:如果希望更安全,建议使用__typeof__() 或者 __typeof()这样,如果用于编译的C语言版本发生变化,也不会受到影响。

__typeof__() 、 __typeof() 、 typeof()的区别相关推荐

  1. js中的typeof 与typescript typeof的区别

    js中的typeof 与typescript typeof的区别 在 JavaScript 中,typeof 是一个运算符,用于返回一个值的数据类型.它可以返回下列字符串中的一个: "und ...

  2. JavaScript中instanceof运算符的用法以及和typeof的区别

    instanceof : 判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例:返回boolean类型栗子①: var aColors = ["red", "g ...

  3. GetType和typeof的区别

    typeof: The typeof operator is used to obtain the System.Type object for a type. 运算符,获得某一类型的 System. ...

  4. AS3中 is,as,typeof的区别 .

    var my_num:Number=9; trace(typeof my_num); var my_object:Array=["语文","数学"," ...

  5. block(六)循环引用-b

    在ARC与非ARC环境下对block使用不当都会引起循环引用问题,一般表现为,某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身,简单说就是self.theBloc ...

  6. typeof() c语言,C语言中的typeof关键字

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

  7. typeinfo、typeid、 typeof 介绍

    一.type_info类 该类type_info保存有关类型的特定于实现的信息,包括类型的名称以及比较两种类型是否相等或排序顺序的方式.这是typeid运算符返回的类. #ifndef _TYPEIN ...

  8. OC语言Block 续

    OC语言 Block 转载:http://blog.csdn.net/weidfyr/article/details/48138167 1.Block对象中的变量行为 结论: 在block代码块内部可 ...

  9. (转)C语言家族扩展

    (转)C语言家族扩展 翻译: 5.1--5.6 林峰 5.7--5.20 董溥 5.21--5.26 王聪 5.27--5.34 刘洋 5.35--5.43 贾孟树 致谢:感谢陈老师指出其中的一些错误 ...

  10. 春招实习前端面试题汇总

    经历了两个月的复习,笔试,面试.现在总结一下,前端面试中我认为经常被问及的问题. 计算机网络部分 tcp/udp的区别 三次握手,四次挥手 谈谈你对http协议的理解(这里可以深入学习一下HTTPS, ...

最新文章

  1. 精选Pycharm里6大神器插件
  2. 【状态保持】Cache 基于SQL 数据库 的缓存依赖 轮询机制详解
  3. strstr(),strchr()
  4. python培训班 北京-北京python培训机构那个好?这几个坑千万别踩
  5. 0729------Linux网络编程----------使用 select 、poll 和 epoll 模型 编写客户端程序
  6. 爬虫工具篇 - 必会用的 6 款 Chrome 插件
  7. wdr和hdr的区别
  8. hdu 4055 hdu 4489 动态规划
  9. Java基础巩固——排序
  10. vscode php插件_「PHP从入门到颈椎病康复」基础篇——HelloWorld
  11. 数据库日志文件(databasename_log.ldf)太大 如何清除
  12. 对磁盘做完整镜像(按扇区对扇区备份)的目的
  13. 镁光硬盘测试软件,镁光固态硬盘评测
  14. 基于SSM的应急指挥系统
  15. linux下geos如何编译,在Linux上用Python模块编译geos3.6.2
  16. python爬数据是什么意思-这python爬虫是什么意思?爬虫怎么抓取数据?
  17. SigFox Vs. LoRa:技术和商业模式之间的比较
  18. Excel VBA Sheets和Worksheets的区别
  19. 广和通携手联发科技正式发布基于MediaTek T830 平台5G模组FG370的可快速落地FWA解决方案
  20. CSS实现间隔线|(竖线)

热门文章

  1. linux命令速查手册_干货| 有了这个速查手册,还怕Linux命令记不住?
  2. ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core
  3. MySQL Router实现MySQL的读写分离
  4. 软件测试第四周作业WordCount优化
  5. 实现vue2.0响应式的基本思路
  6. 【iOS atomic、nonatomic、assign、copy、retain、weak、strong】的定义和区别详解
  7. 3.12课·········数组
  8. 物联网带着诚意扑面而来
  9. 用react-service做状态管理,适用于react、react native
  10. logback与log4j比较