Windows.h と Std の間の最小マクロと最大マクロの衝突
C で入力検証を処理する場合、 Windows.h で定義されている max マクロと、標準ライブラリの max 関数。これは、ignore 関数を使用して入力ストリーム エラー フラグをクリアしようとすると発生する可能性があります。
この問題を解決するには、次のアプローチの使用を検討してください。
#define NOMINMAX #include <Windows.h> #include <iostream> void Foo() { int delay = 0; do { if(cin.fail()) { cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } cout << "Enter number of seconds between submissions: "; } while(!(cin >> delay) || delay == 0); }
NOMINMAX マクロは、最小値と最小値を抑制します。 Windows.h の max 定義により、プログラムが競合することなく標準ライブラリの max 関数を使用できるようになります。このアプローチにより、max マクロの定義を手動で解除し、後で再定義する必要がなくなります。
以上がWindows.h と標準ライブラリの間の「max」マクロ衝突を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。