我有一个二次方程式结构,我想让它在visual studio 2008调试器中看起来更漂亮。这是结构:
struct QuadraticEquation
{
float squareCoefficent; float linearCoefficent; float yIntersection;
}
我希望它在调试器中显示为格式正确的公式:
3.0x^2 - 1.3x + 6.5
这是autoexp.dat预览脚本:
QuadraticEquation{
preview
(
#if($c.squareCoefficent != 0.0f)
(
#($c.squareCoefficent, "x^2")
)
#if($c.linearCoefficent < 0.0f)
(
#(" - ", -$c.linearCoefficent, "x")
)
#elif($c.linearCoefficent > 0.0f)
(
#(" + ", $c.linearCoefficent, "x")
)
#if($c.yIntersection < 0.0f)
(
#(" - ", -$c.yIntersection)
)
#elif($c.yIntersection > 0.0f)
(
#(" + ", $c.yIntersection)
)
)
}
非常直接。但是当我运行代码时,我收到以下错误消息:
ERROR! Autoexp.dat:line(286) for 'QuadraticEquation': Failed to match ')' for preview/children rule
行号对应第二个#if分支,即#if($c.linearCoefficent < 0.0f)...
如果删除除square coefficent分支以外的所有内容,则不会出错。如果这意味着我不能拥有连续的#if块,我怎么能在这里做我想做的事情 - 而不是掉进一个dll?
答案 0 :(得分:1)
我认为你必须使用嵌套的#if
来实现这样的目标。检查默认std::complex<*>
中autoexp.dat
的完成情况。
这需要进行大量打字才能涵盖所有可能的组合。你真的需要吗?也许只是将它显示为一个结构就足够实用了。