Bre*_*men 2 c c++ inline function
我有一个关于c/c ++中的内联函数和参数复制的问题.让我们假设我想在没有内联说明符的情况下运行此函数:
void my_func(int param)
{
my_inner_func(param);
}
Run Code Online (Sandbox Code Playgroud)
param将首先复制到my_func然后再复制到my_inner_func.如果函数my_func是inline,那么编译器只会复制param一次my_inner_func参数或两次.我将非常感谢所有的帮助.
编辑:如果它有所不同,我想请求c和c ++的解释.
C和C++都根据抽象机器指定程序的行为.
my_func的int param存在于该抽象机,它是从不同my_inner_func的int param.他们有不同的身份.如果你取一个地址和另一个地址,它们保证比较不相等.
但如果你不采用其中任何一个的地址,也不需要有地址.
如果你对a做的int只是分配或初始化它,那么用它来分配或初始化另一个int,并且编译器可以证明没有定义的方法int通过间接(如指针)到达中间体,那么中间体int不需要存在于实际的目标机器.
有些编译器在链接时遇到这样的问题.其他人没有.
有些行动会阻止这种行为的存在int.其他人不会.
我在您的示例中看不到任何要求中间int存在于目标计算机上的内容.