我想禁用单个函数或代码块的编译器优化。 我在 Visual studio 2019 环境中。
我尝试以下:
__forceinline void InsertJunkCode() {
#pragma optimize("", off)
.... Junk Code ....
#pragma optimize("", on)
}
...
int main() {
...
InsertJunkCode();
...
}
...
Error: C2156 pragma must be outside function
...
有没有办法禁用单个函数或代码块的优化?
optimize pragma 仅适用于整个函数,不适用于任意代码段。因此,oragma 必须出现在任何功能之外。
#pragma optimize("", off)
__forceinline void InsertJunkCode()
{
.... Junk Code ....
}
#pragma optimize("", on)
这从文档中可以清楚地看出:
optimize pragma 必须出现在函数外部。它在看到编译指示后定义的第一个函数时生效。