0

2 차 방정식 구조체가 있고 Visual Studio 2008 디버거에서 더 멋지게 보이게하고 싶습니다.autoexp.dat 미리보기에서 순차 #if 블록을 사용할 수 있습니까?

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($c.linearCoefficent < 0.0f)...

시작 번호가 두 번째의 #if 지점에 해당하는 라인, , 오류가 아닙니다. 이것이 순차 #if 블록을 가질 수 없다는 것을 의미한다면, 내가 원하는 것을 여기에서 어떻게 할 수 있습니까? dll로 떨어지지 않고 어떻게 할 수 있습니까?

답변

1

나는 이런 식으로 달성하기 위해 중첩 된 #if을 사용해야한다고 생각합니다. std::complex<*>이 기본값 autoexp.dat에서 어떻게 수행되는지 확인하십시오.

가능한 모든 조합을 다루기 위해 많은 타이핑이 필요합니다. 너 정말 필요해? struct로 단순히 표시하는 것이 실용적인 용도로도 충분할 수 있습니다.

+0

그래, 나는 그 모든 +/- 조합을 손으로하지 않고있다. 그들은 뛰어 내릴 수있다. 'std :: complex <*>'을 지적 해 주셔서 감사합니다. – tenpn

관련 문제