2011-01-25 3 views
17

저는이 코드를 집에서 Mac w/xcode에 컴파일 했으므로 문제가 없었습니다. 나는 리눅스에서 ++ g 학교에서 컴파일 나는 이러한 오류를 얻을 :'numeric_limits'가이 범위에서 선언되지 않았습니다. 'max()'에 대한 호출과 일치하는 함수가 없습니다

: 'numeric_limits은'표준
의 구성원이 아닌 : 예상 전에 주 - 식 '>'토큰
님의 호출에 대한 일치하는 기능 '최대()'

#include <iostream> 
#include <cstdlib> 

using namespace std; 

int GetIntegerInput(int lower, int upper) 
{ 
    int integer = -1; 
    do 
    {  
     cin >> integer; 
     cin.clear(); 
     cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); //errors here 
    }while (integer < lower || integer > upper); 

    return integer;  
} 

어쩌면 추가 헤더를 포함해야 할 수도 있습니다. 나는 표준을 빼앗아 경우 : 그냥 비슷한 오류를 나에게

'numeric_limits'이 범위 당신은 std::numeric_limits가 정의 된 곳이다 헤더 파일 <limits>을 포함 할 필요가

+0

'numeric_limits'에 대한 문서를 읽고 어떻게 사용하는지 배우면 어떤 헤더가 있는지 알려주지 않았습니까? –

+0

그래,하지만 그건 얼마 전이야. 그리고 나서 나는 최근에 깨닫지 못한 채 다른 프로젝트의 코드를 복사 해 넣었다. –

답변

44

에 선언되지 않았습니다을 제공합니다. Mac 컴파일러가 자동으로 해당 헤더 파일을 포함시켜 사용자를 돕고있었습니다. 그러나, 당신은 그 행동에 의존해서는 안되며 명시 적으로 필요한 헤더 파일을 포함해서는 안됩니다.

+5

이 기능의 이름이 있습니까? 플랫폼 독립성을 깨뜨리지 않도록 비활성화하는 방법을 알고 싶습니다. – MatrixManAtYrService

관련 문제