如果我有一个像这样的简单课程
class A {
void private_function();
public:
void public_function() { /* calls the private function in here */ }
};
编译器是否需要为private_function()发出目标代码,或者是否允许内联对private_function()的所有调用并从生成的可执行文件中省略private_function?
答案 0 :(得分:4)
编译器是否需要发出
的目标代码private_function()
如果有人使用其地址,则必须这样做。
或是否允许内联对
private_function()
的所有调用并从生成的可执行文件中省略private_function
?
如果没有使用它的地址,是的。无论是否生成未使用的非内联版本,程序的行为都是相同的;因此,通过“似乎”规则,可以自由地不生成它。