不透明函数调用在编译器优化中意味着什么?

What does an opaque function call mean in compiler optimization?

不透明的函数调用在编译器优化中意味着什么?我在 Why do global variables cause trouble for compiler optimizations in function calls? 中找到了它,而 'opaque function call' 真的让我很困惑。 似乎不透明的函数调用是编译器没有关于它的信息的函数调用。但这是什么意思?

正如您在问题中提到的,不透明函数调用是对编译器没有先验信息的函数的调用。这意味着除了语言定义保证的内容外,编译器不能对该调用的副作用做出任何假设。例如,由于编译器没有其他信息,它必须假设函数调用可以修改任何全局变量,并且必须确保在调用之前存储任何局部更改,它还必须在调用之后重新加载使用的全局变量。此外,编译器永远不会跳过对该函数的调用,即使调用它看起来毫无用处,因为编译器无法确定这一点。