C ++编译器 - 常用符号

时间:2012-05-02 09:29:38

标签: c++ compiler-construction compilation gnu gnu-toolchain

我对C ++编译器有疑问。

什么时候C ++编译器会创建一个公共符号?使用C编译器,我可以为目标文件提供通用符号,但是如果我使用C ++编译器(GNU)编译完全相同的代码,我只获得定义和未定义的符号。

所以问题是在什么情况下会导致变量/函数在C ++中编译为常见?

2 个答案:

答案 0 :(得分:1)

他们中的一些人从未这样做过。已故和备受诟病的Watcom C ++编译器充分利用了通用符号来节省内联函数实例。 extern的各种情况也可以通过这种方式经济地解决。

答案 1 :(得分:1)

存在公共符号的主要原因是Fortran具有公共块,因此名称为“公共符号”。常见符号的概念与C ++是对立的,而且它是一个相当严格的定义规则。 C具有类似的规则,但C标准还认识到允许相同符号的多个定义是该语言的常见扩展。 C ++没有“公共扩展”附录。供应商是否符合标准,或者不是。

结论:C ++编译器没有理由生成公共符号。