我知道我可以将函数指针作为模板参数传递并内联调用它,但我想知道现在是否有任何编译器可以内联“明显的”可内联函数,例如:
inline static void Print()
{
std::cout << "Hello\n";
}
....
void (*func)() = Print;
func();
在 Visual Studio 2008 下,它足够聪明,可以将其简化为直接调用指令,因此不能更进一步似乎很遗憾?
最佳答案
较新版本的 GCC(4.4 及更高版本)有一个名为 -findirect-inlining 的选项。如果 GCC 可以向自己证明函数指针是常量,那么它会直接调用该函数或完全内联该函数。
关于c++函数指针内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2959535/