1

我有一个关于 C++ 编译器的问题。

C++ 编译器何时会创建一个通用符号?使用 C 编译器,我可以为目标文件提供通用符号,但如果我使用 C++ 编译器 (GNU) 编译相同的代码,我只会得到已定义和未定义的符号。

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

4

2 回答 2

2

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

于 2012-05-02T09:44:42.100 回答
2

通用符号存在的主要原因是因为 Fortran 具有其通用块,因此名称为“通用符号”。通用符号的概念与 C++ 是对立的,它是一个相当严格的定义规则。C 有类似的规则,但 C 标准也承认允许对同一符号进行多个定义是该语言的常见扩展。C++ 没有“通用扩展”附录。供应商要么符合标准,要么不符合。

底线:C++ 编译器没有理由生成通用符号。

于 2012-05-02T10:45:00.763 回答