代码之家  ›  专栏  ›  技术社区  ›  leeeroy

为什么g++会生成多个(弱)相似的符号?

  •  3
  • leeeroy  · 技术社区  · 16 年前

    我在看 nm

    0804a86a W ForkMessageHandler::ForkMessageHandler()
    0804a86a W ForkMessageHandler::ForkMessageHandler()
    0804a6fa T ForkMessageHandler::~ForkMessageHandler()
    0804a698 T ForkMessageHandler::~ForkMessageHandler()
    0804a698 T ForkMessageHandler::~ForkMessageHandler()
    0804a800 W MultiMessageHandler::MultiMessageHandler()
    0804a800 W MultiMessageHandler::MultiMessageHandler()
    0804a84c W MultiMessageHandler::~MultiMessageHandler()
    0804a81c W MultiMessageHandler::~MultiMessageHandler()
    0804a81c W MultiMessageHandler::~MultiMessageHandler()
    

    编辑:这来自最终可执行文件,而不是.o文件。ForkMessageHandler是在.cpp文件中定义的,没有一个包含它的头,但有几个包含它的基类的头。

    2 回复  |  直到 16 年前
        1
  •  5
  •   Laserallan    16 年前

    这些是默认构造函数和自动生成的析构函数。

    它们很弱的原因是为了避免链接过程中的冲突,因为类定义将出现在每个对象文件中,包括它定义的头文件。

        2
  •  0
  •   Michael Burr    16 年前

    我的理解是GCC产生了 inline