C++ 内联函数时的编译器限制
我知道,在向类成员函数添加inline关键字后,如果“函数不复杂”或函数体中有“许多语句”,编译器将决定内联C++ 内联函数时的编译器限制,c++,inline,C++,Inline,我知道,在向类成员函数添加inline关键字后,如果“函数不复杂”或函数体中有“许多语句”,编译器将决定内联 什么被认为是“很多声明” 如果隐式或显式获取函数的地址,编译器也无法执行内联。有人能解释这一点吗 因为内联只是一个建议,我如何测试哪些函数没有内联 关于编译器何时可以内联签出此线程的问题: 编译器是否内联生成代码取决于 编译器。大多数现代编译器将生成 任何不是递归内联的 这完全是错误的。当地址被记录下来时 编译器必须为地址生成一个越行副本,但是 这并不能阻止它在函数运行时内联 打电话来
关于编译器何时可以内联签出此线程的问题:
gcc
这是-s
选项),并手动检查它。不过,请注意,检查优化的二进制文件并不是一件小事——因为内联代码与调用者代码混合在一起,所以可能很难准确地找到内联函数的位置,同时您还可能找到函数的非内联副本,以便通过函数指针使用(如上所述)