2009-10-21 2 views
0

Mac (GCC 4.2)에서 짧은 프로그램을 컴파일하는 데 매우 흥미로운 문제가 있습니다. 아래 함수는 문자열이나 문자열을 문자열 스트림으로 스트리밍하지만 그 밖의 것은 없습니다 (int, double, float 등). 실제로 int를 문자열로 변환하려고하면 fail 플래그가 설정됩니다.std :: stringstream GCC 비정상적인 행동

그러나 디버그 모드의 XCode에서 기본적으로 설정되는 전처리 기 플래그 인 _GLIBCXX_DEBUG=1을 제거하면 원하는 결과/올바른 동작을 얻을 수 있습니다.

여기 내가 말하는 간단한 기능이 있습니다. 값은 유형 T의 템플릿 변수입니다. int, double, float (작동하지 않음), char 및 strings (작동 중)에 대해 테스트되었습니다.

내가 잘못 뭐하는 거지
template < typename T > 
const std::string Attribute<T>::getValueAsString() const 
{ 
std::ostringstream stringValue; 
stringValue << value; 
return stringValue.str(); 
} 

어떤 아이디어,이 작동하지 않는 이유, 또는 전처리 플래그이 더 이상 작동하지 않을 수 있도록 무엇?

감사합니다.

답변

관련 문제