假设我们有以下代码:
inline void DoSome()
{
cout << "do some" << endl;
}
int main()
{
void (*pDoSome)() = DoSome;
DoSome(); // one
pDoSome(); // two
}
对于上面的代码,我们有三种可能的情况:
现在我想知道上述哪些情况属实?
答案 0 :(得分:6)
所有方案都是可能的,因为编译器可以根据需要进行优化。查看发生的事情的唯一选择是查看汇编程序输出。
答案 1 :(得分:6)
inline
是对编译器的暗示,但它不是义务。由编译器决定是否实际内联声明为inline
的函数,因此可能会或可能不会内联这两个调用中的任何一个。