2013-05-07 49 views

回答

6

这是在玩笑小。因为C直到最近还没有超载的概念,所以C++有能力使用C链接来标记标识符,这通常意味着没有命名同一名称但不同的参数签名。

您指定联动的方式是通过标识符与周边:

extern "C" { 
    whatever ... 
} 

现在,BCPL是预先日期甚至C(它实际上形成的C系的一部分)的语言和它的“联动“(因为缺乏一个更好的词)只是一个称为全局向量的地址表。

您参考的文档的作者仅仅是幽默,CLang实际上并不提供提供extern "BCPL"的东西。您还会注意到,当前版本的LLVM在3.2之前是3.2版本,直到今年6月才会发布。 LLVM 3.8评论的另一个迹象表明作者正在使用我们。

由于那句话的目的只是显示注释(内[])是如何工作的,文本的其余部分主要是无关紧要的。


随着C11的引入类型的通用表达式,现在它已经超载了几分,但在编译的时候,而不是运行时完成。

2

此行显然是随机从一个不知名的方面采取的只是为了演示修订标记,例如[开始苹果8.0,LLVM 3.8和BPTRs和BCPL并不意味着具体的事情。一般来说,BPTR的意思是像字节指针。

+1

如果我可以提供一个修正,BPTR是AmigaOS声明的类型,如AmigaDOS是荣誉学位的端口,写在BCPL。 AmigaOS使用APTR作为“地址指针”,而BPTR作为“BCPL指针”。 BPTRs不是字节指针,因为BCPL本身就是一个字解决虚拟机,而不是一个字节寻址的机器像C.因此,要BPTRs转换为字节地址,您将评估AP =(APTR)(((WORD)BP) *的sizeof(WORD))。大多数程序员只会做出一些硬件假设,并写出ap =(APTR)(bp << 2)等。 – 2014-03-29 04:18:45

+1

嗨塞缪尔,感谢您的评论 - 我不知道这一点。伟大的信息! – 2014-03-30 12:49:41