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();
}
어떤 아이디어,이 작동하지 않는 이유, 또는 전처리 플래그이 더 이상 작동하지 않을 수 있도록 무엇?
감사합니다.