main.cpp ファイルの最近の更新で、次のプリプロセッサ ディレクティブを導入しました。
#define NOMINMAX #include <Windows.h> #include <algorithm>
このアクションにより、コード内で std::max 関数と std::min 関数を利用できるようになります。ただし、その後、他のファイル内でこれらの関数を使用しようとすると、次のようなエラーが発生します。
error C2589: '(' : illegal token on right side of '::' error C2059: syntax error : '::'
これらの追加ファイルで NOMINMAX を定義しようとしても、問題は解決しません。
問題はNOMINMAX は、Windows の min および max マクロのエイリアスを定義し、
(std::min)(x, y);
このアプローチにより、関数のようなマクロの呼び出しが回避され、標準の C バージョンを適用できるようになります。
以上が#define NOMINMAX で std::min/max を使用するとエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。