뽀뽀중 님이 쓰신 글 :
: Use 'classic' Borland compiler 를 false 하면
: CLANG/LLVM 를 사용하는 것으로 알고 있습니다.
:
: Borland 컴파일러를 사용여 디버깅 할 경우, 변수위에 마우스를 올려놓고 기다리면, 값을 알수 있어 유용하게 사용을 하였습니다.
: 공개된 c++ 소스를 사용하다 보니, Borland 컴파일러는 경고 및 에러가 발생하여 CLANG/LLVM 를 사용하고 있습니다.
:
: 그런데, 디버깅 모드에서 변수 위에 마우스를 올려 놓아도 변수값을 알수가 없습니다.
: 원래 이런 것인가요???
:
:
: 또 다른문제...
:
: pair 와 vector를 사용해서 자료를 저장해서 사용하려, 아래와 같이 작성을 하였습니다.
:
: vector<pair<AnsiString, int>>vpRainData
:
: CLANG/LLVM에서는 경고나 에러없이 잘 컴파일 되는데, Borland 컴파일러를 사용하면, 에러가 발생합니다.
: Borland 컴파일러는 위와 같은 구문을 컴파일 할수 없나요??
:
: 너무도 불편하네요..
답변:
1.
엠바툴이 워낙에 IDE, 디버거 환경이 부실해요.
변수 정보가 안나타나는 것은 그나마 양호한 겁니다.
원인을 모르게 코드컴플리트가 일어날 때, IDE가 먹통이 되는 경우가 자주 발생하는데
IDE 를 킬하고 다시 시작하지 않으면 꼼짝도 안하거든요.
2.
vector<pair<AnsiString, int>>vpRainData
위 구문이 clang 포팅 컴파일러에서는 에러 없이 컴파일 되는데...
Borland C++ 컴파일러를 사용하면 에러가 발생하는 이유는
Borland C++ 컴파일러가 템플릿코드를 파싱할 때, 오른쪽 끝의 ">>" 가 공백없이 붙어 있을 경우
템플릿 파싱을 제대로 하지 못해서 입니다.
Borland C++ 컴파일러로 컴파일 하려면...
vector< pair<AnsiString, int> >vpRainData
와 같은 식으로 오른쪽 끝의 ">>"를 공백을 넣어서 "> >" 로 해줘야 파싱을 정상적으로 합니다.
Borland C++ 컴파일러가...
오퍼레이터로 사용되는 ">>"와 템플릿에서 T 파라미터 인수를 지정하는 ">>"를
구분해서 파싱하지 못해서 일어나는 문제 입니다.
|