6

ARC 的 Clang 文档中,它说:

ARC 适用于在 extern "BCPL" 块中声明的 Objective-C 指针类型、块指针类型和 [beginning Apple 8.0, LLVM 3.8] BPTRs。

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

4

2 回答 2

7

这是一个小笑话。

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

您指定链接的方式是通过将标识符括起来:

extern "C" {
    whatever ...
}

现在,BCPL 是一种甚至早于 C 的语言(它实际上构成了 C 血统的一部分),它的“链接”(因为需要一个更好的词)只是一个称为全局向量的地址表。

您引用的该文档的作者只是幽默,CLang 实际上并没有提供 extern "BCPL"任何东西。您还会注意到 LLVM 的当前版本是 3.2,而 3.3 直到今年 6 月才发布。另一个迹象表明作者正在让我们继续,LLVM 3.8 评论。

由于该句子的意图只是显示注释(在 内[])是如何工作的,因此文本的其余部分在很大程度上是无关紧要的。


1随着 C11 中类型泛型表达式的引入,它现在具有某种重载,尽管在编译时而不是运行时完成。

于 2013-05-22T05:21:03.830 回答
2

这条线显然是从未知的上下文中随机抽取的,只是为了演示 [beginning Apple 8.0, LLVM 3.8] 之类的修订标记,而 BPTR 和 BCPL 并不意味着任何特定的东西。通常,BPTR 的意思是字节指针。

于 2013-05-08T05:38:50.500 回答