【问题标题】:C++ compiler - common symbolsC++ 编译器 - 常用符号
【发布时间】:2012-05-02 09:29:37
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢。我正在尝试总结对象符号类型,我需要一个符合常见的示例,所以我想在这种情况下我将无法提供它。
    • @cosinus 这个例子是一个内联函数调用!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多