Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这是我的 C++ 类,部分在类内部定义,部分在外部定义。问题:做 nm 表明类声明中定义的函数不会出现在目标文件中,但外部的会出现。我应该怎么做才能使类中的符号也出现在目标文件中?我正在使用 g++ 4 系列。
class A { public: void this_will_not_show_up() { }; void this_will_show_up(); }; void A::this_will_show_up() { }
在类定义中内联定义的函数被编译为内联函数,即这个函数中的代码被“复制”到调用函数。因此,您没有任何专用的内联函数实现,也没有链接器符号。
当您在编译单元中定义非内联方法时,可能是从不同的编译单元调用此函数。因此,此实现需要可以链接的功能。编译器只生成一个函数,其中包括您在链接器映射中找到的标头和(装饰的)名称。
在共享库中使用它没问题,因为编译器需要使用的所有内容都在头文件中定义。有像 STL 这样的库几乎完全只作为头文件实现。