在Objective-C中,我在处理块等时经常使用__typeof__(obj).为什么不使用__typeof(obj)typeof(obj)呢.

什么时候用哪个?

推荐答案

__typeof__()__typeof()是C语言的特定于编译器的扩展,因为标准C不包含这样的运算符.标准C要求编译器在语言扩展的前面加上双下划线(这也是为什么您永远不应该为自己的函数、变量等这样做的原因)

typeof()是完全相同的,但将下划线抛出窗口时,要理解每个现代编译器都支持它.(实际上,现在我想起来了,Visual C++可能不支持.但是它支持decltype(),它通常提供与typeof()相同的行为.)

这三个词的意思都是一样的,但没有一个是标准的C,因此一致性编译器可以 Select 使任何一个词的意思不同.

Objective-c相关问答推荐

Clang:将 id 之类的类型转换警告提升为 class

核心数据 - 如何获取具有最大值属性的实体

iPhone:推送通知后如何删除徽章?

使用 CALayer 时无法编译代码

如何将 UISlider 垂直放置?

仅替换 NSString 中子字符串的第一个实例

实现 -hash / -isEqual: / -isEqualTo...: 用于 Objective-C 集合

如何在 iPhone 上显示来自 API 的 HTML 文本?

在 iOS 中创建带有 URL 的 UIImage

如何计算多边形的圆角?

设置数据后调整 UICollectionView 单元格的大小

在我的 iOS Mail 和 Safari 应用程序中支持 Open In... 菜单项

Objective-C 中是否有一些文字字典或数组语法?

判断 NSNumber 是否为 NaN

iOS Buttons - 添加边框

如何在 UIAlertController 中添加 textField?

Cocoapods ld:找不到-lPods-Projectname 的库

如何设置 NSPredicate 来查找具有 nil 属性的对象

AppDelegate 的当前视图控制器?

如何根据按钮按下重新加载/刷新 UIPickerView(带有新数据数组)?