在Objective-C我经常用__typeof__(obj)
等,为什么不处理时__typeof(obj)
或typeof(obj)
。
何时该使用哪个呢?
发布于 2018-04-17 16:03:44
__typeof__()
并且__typeof()
是C语言的编译器专用扩展,因为标准C不包含这样的运算符。标准C要求编译器用双下划线前缀语言扩展(这也是为什么你不应该为自己的函数,变量等做这些)
typeof()
是完全一样的,但将下划线抛出窗外,并理解每个现代编译器都支持它。(实际上,现在我想到了,Visual C ++可能不会,它支持,decltype()
但它通常提供与。相同的行为typeof()
。)
发布于 2018-04-17 17:40:57
Clang支持使用typeof()
,但从技术上讲,这是因为您的C语言方言被设置为gnu *类型。但是__typeof__()
,在c *和gnu *语言方言中都支持这一点- 详见Clang 文档。
现在,如果你使用Xcode编写代码,C语言方言的默认设置看起来是GNU99,并且允许' asm''inline''typeof '的选项设置为Yes,所以使用typeof()
不会为你带来任何问题。
如果使用C语言方言进行编辑更改或者有人决定关闭“typeof”的限制,则这种方式不会受到影响。
https://stackoverflow.com/questions/-100004426
复制相似问题