Можете ли вы использовать последовательные блоки #if в предварительном просмотре autoexp.dat? - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть структура квадратного уравнения, и я хотел бы, чтобы она выглядела лучше в отладчике 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)...

Если я уберу все, кроме квадратной ветви коэффициента, это не будет ошибкой. Если это означает, что у меня не может быть последовательных блоков #if, как еще я могу делать то, что я хочу здесь - без перехода в DLL?

1 Ответ

1 голос
/ 02 февраля 2011

Я думаю, вы должны использовать вложенные #if для достижения чего-то подобного. Проверьте, как std::complex<*> выполняется по умолчанию autoexp.dat.

Это займет много времени, чтобы набрать все возможные комбинации. Тебе это действительно нужно? Может быть, отображение его просто в виде структуры достаточно для практических целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...