1

如何禁用对Visual Studio中特定函数的尾部调用?
我需要这个的原因是因为我有一个函数打破了我在发生错误时使用的调试器,并且我需要查看调用它的函数。
我无法更改全局优化选项,因为项目运行速度太慢而没有进行优化。在Visual Studio中禁用对函数的尾部调用

+0

不能禁用优化函数使用'#pragma optimize'? – librik

+0

你打算在*优化*构建调试器?即使你禁用了尾部递归,我也无法想象这将会非常有效率。为什么不在禁用优化的情况下调试构建时进行调试,然后在代码发生错误时开启优化(包括尾调用递归)? –

+0

@CodeGray:我说我不能运行调试版本,因为它太慢了。调试优化版本非常简单。 – Dani

回答

0

(我假设你在写C,因为你没有指示语言或给予任何代码。)

的一种方式,以确保一个优化的C编译器不转换尾递归调用跳转将通过函数指针变量进行调用。设置函数指针等于要递归调用的函数,声明它volatile保持优化从智胜你,并更换特定

return x * factorial(x-1); 

static int (*volatile factorial_fp)(int) = factorial; 

return x * (*factorial_fp)(x-1); 
相关问题