web-dev-qa-db-ja.com

「numeric_limits」はこのスコープで宣言されていません。「max()」の呼び出しに対応する関数はありません

このコードをxcodeを使用してMacで自宅でコンパイルしましたが、問題はありませんでした。学校でLinux上のg ++​​を使用してコンパイルすると、次のエラーが発生します。

: ‘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;    
} 

多分私は余分なヘッダーを含める必要があると思います。 std ::を削除すると、同じようなエラーが発生します

「numeric_limits」はこのスコープでは宣言されていません

20
Matt Munson

ヘッダーファイルを含める必要があります<limits>、これはstd::numeric_limitsが定義されています。あなたのMacコンパイラは、そのヘッダファイルを自動的にインクルードすることであなたを助けていました。ただし、その動作に依存せず、必要なヘッダーファイルを明示的に含める必要があります。

51
Adam Rosenfield