2

如果我有一个像这样的简单课程

class A {
    void private_function();
public:
    void public_function() { /* calls the private function in here */ }
};

编译器是否需要为 private_function() 发出目标代码,或者是否允许内联对 private_function() 的所有调用并从生成的可执行文件中省略 private_function?

4

1 回答 1

4

编译器是否需要为private_function()

如果有任何东西使用它的地址,它就必须这样做。

还是允许内联对生成的可执行文件的所有调用private_function()和省略?private_function

如果没有任何东西使用它的地址,是的。无论程序是否生成未使用的非内联版本,程序的行为都是相同的;所以根据“好像”规则,不生成它是免费的。

于 2013-10-25T15:30:50.273 回答