«NUMIRC_LIMITS» не был объявлен в этом прицеле, не соответствующей функции для вызова 'max ()'

StackOverflow https://stackoverflow.com/questions/4798936

Вопрос

Я собрал этот код дома на моем Mac с Xcode, и не было провинции. Я составляю его в школе с G ++ на Linux и получаю эти ошибки:

: 'numeric_limits' не является членом Std
: ожидаемая первичная экспрессия раньше '>' токен
: нет совпадения функции для вызова 'max ()'

#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;    
} 

Я Geussing, может быть, мне придется включить дополнительный заголовок. Если я заберу у STD :: это просто дает мне подобную ошибку

«NUMIRC_LIMITS» не был объявлен в этой области

Это было полезно?

Решение

Вам нужно включить файл заголовка <limits>, где где std::numeric_limits определено. Ваш компилятор Mac помогал вам автоматически, включая этот файл заголовка; Тем не менее, вы не должны полагаться на это поведение и явно включать в себя любые файлы заголовков, которые вам нужны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top