在Visual Studio的立即窗口中访问“cmath”函数

时间:2013-09-24 21:25:00

标签: c++ visual-studio-2010 visual-c++

在使用调试器的Visual Studio 2010 Express中,我可以输入成员函数,如:

?visc(alpha,i)  
8.2814899360436612e-005
?get_sign()
0.91513417241239037

进入立即窗口,它们工作正常。 但是,如果我尝试:

?sin(alpha)
?math.sin(alpha)
?cmath.sin(alpha)

我得到Error: symbol "math" not found等等。我在主文件中包含了 cmath.h ,并使用sinasincosacosatan2和整个代码中sqrt。如何在立即窗口中获取这些功能?我用Google搜索了我的问题,并在2005年发现了添加此请求的示例以及使用成员函数的示例。

3 个答案:

答案 0 :(得分:2)

这听起来不是直接支持: http://connect.microsoft.com/VisualStudio/feedback/details/283279/add-simple-maths-function-support-to-debugger-exp-sin-cos-sqrt

我认为如果你知道正确的dll,你可以使用刚刚记录的上下文操作符来获取它(这是本周我第二次遇到这个人&# 39;博客): http://thetweaker.wordpress.com/2009/05/30/breaking-on-system-functions-with-the-context-operator/

对类似问题的回答: https://stackoverflow.com/a/3032271/611672

希望这有帮助。

答案 1 :(得分:0)

使用什么编译器并不重要。使用命名空间std符合C ++标准,所以:

#include <cmath>


...


std::sin(0.2445);

答案 2 :(得分:0)

只有部分导出的 dll 函数在 Visual Studio 即时窗口中工作。一些最常见的函数如 sin、cos、pow、exp 不起作用。以下是一些在 Visual Studio 2012 中经过测试的工作功能:

msvcp110d.dll!log(2.0)
0.69314718055994529
msvcr110d.dll!sqrt(2.0)
1.4142135623730951
msvcr110d.dll!_hypot(-2.0,1.0)
2.2360679774997898
msvcr110d.dll!_logb(-2.0)
1.0000000000000000
msvcr110d.dll!abs(-2.0)
2.0000000000000000
msvcr110d.dll!acos(-2.0)
-1.#IND000000000000
msvcr110d.dll!cosh(1)
1.5430806348152437
msvcr110d.dll!fabs(1)
1.0000000000000000