在Objective-C ARC中,什么是"在extern中声明的BPTR"BCPL"块"?

use*_*008 6 objective-c llvm clang bcpl automatic-ref-counting

ARCClang文档中,它说:

ARC适用于在extern"BCPL"块中声明的Objective-C指针类型,块指针类型和[开始Apple 8.0,LLVM 3.8] BPTR.

这些"在外部"BCPL"块"中声明的"BPTR"是什么?

pax*_*blo 7

这是一个小小的玩笑.

C++能够使用C链接标记标识符,这通常只意味着没有名称修改具有相同名称但不同参数签名的函数,因为C直到最近才没有重载的概念1.

指定链接的方式是将标识符包围在:

extern "C" {
    whatever ...
}
Run Code Online (Sandbox Code Playgroud)

现在,BCPL是一种甚至比C更早的语言(它实际上构成了C谱系的一部分),它的"链接"(因为缺少一个更好的词)只是一个称为全局向量的地址表.

你引用的那份文件的作者只是幽默,CLang实际上并没有提供任何 extern "BCPL"东西.您还会注意到当前版本的LLVM是3.2,而3.3直到今年6月才到期.另一个迹象表明作者正在使用LLVM 3.8评论.

由于该句子的意图仅仅是为了说明注释(内部[])是如何工作的,因此文本的其余部分基本上是无关紧要的.


1随着C11中类型泛型表达式的引入,它现在有重载的重载,虽然在编译时而不是运行时完成.