質問
C++ コードに min() または max() 呼び出しがあると、奇妙なエラーが発生します。Visual C++ コンパイラを使用しています。
解決
コードに次のものが含まれているかどうかを確認してください windows.h ヘッダー ファイルと、コードまたは他のサードパーティのヘッダーのいずれかが独自のヘッダーを持っています。 分()/最大() 定義。「はい」の場合は、先頭に windows.h の定義を持つ包含 ノーミンマックス このような:
#define NOMINMAX
#include <windows.h>
他のヒント
別の可能性としては副作用が考えられます。ほとんどの min/max マクロにはパラメータが複数回含まれるため、期待どおりに動作しない可能性があります。エラーや警告が生成される場合もあります。
max(a,i++) expands as ((a) > (i++) ? (a) : (i++))展開内の () は、数式で呼び出した場合の問題を回避するためのものです。max(a,b+c) を展開してみてくださいその後、私はプラス 1 またはプラス 2 になります
Windows ではこれを関数スタイルのマクロとして定義しているため、次の回避策が利用可能です。
int i = std::min<int>(3,5);
これはマクロなので機能します min()
の場合にのみ展開されます。 min
続いて (
, 、その後に続く場合はそうではありません <
.
うーん...範囲を広げてください、おい: std::min()
, std::max()
.
もう何年も使っていないのですが、メモリブーストにより最小値と最大値も割り当てられるのではないでしょうか?
正直に言うと、最小/最大に関しては、自分で定義するのが最善だと思います。
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) >= (b) ? (a) : (b))
所属していません StackOverflow