我有一个关于 C++ 编译器的问题。
C++ 编译器何时会创建一个通用符号?使用 C 编译器,我可以为目标文件提供通用符号,但如果我使用 C++ 编译器 (GNU) 编译相同的代码,我只会得到已定义和未定义的符号。
所以问题是什么情况会导致变量/函数在 C++ 中被编译为常见的?
我有一个关于 C++ 编译器的问题。
C++ 编译器何时会创建一个通用符号?使用 C 编译器,我可以为目标文件提供通用符号,但如果我使用 C++ 编译器 (GNU) 编译相同的代码,我只会得到已定义和未定义的符号。
所以问题是什么情况会导致变量/函数在 C++ 中被编译为常见的?
他们中的一些人从不这样做。已故且备受诟病的 Watcom C++ 编译器充分利用常用符号来节省内联函数实例。有各种情况extern
也可以通过这种方式经济地解决。
通用符号存在的主要原因是因为 Fortran 具有其通用块,因此名称为“通用符号”。通用符号的概念与 C++ 是对立的,它是一个相当严格的定义规则。C 有类似的规则,但 C 标准也承认允许对同一符号进行多个定义是该语言的常见扩展。C++ 没有“通用扩展”附录。供应商要么符合标准,要么不符合。
底线:C++ 编译器没有理由生成通用符号。