43

Visual Studio 2010SP1でopenFrameworks007プロジェクトをコンパイルしているときに、次の警告が表示されます。

d:\pedro\development\videoflow\openframeworks\libs\openframeworks\types\ofcolor.h(127): warning C4003: not enough actual parameters for macro 'max'
d:\pedro\development\videoflow\openframeworks\libs\openframeworks\types\ofcolor.h(128): warning C4003: not enough actual parameters for macro 'max'
d:\pedro\development\videoflow\openframeworks\libs\openframeworks\graphics\ofpixels.h(150): warning C4003: not enough actual parameters for macro 'max'
d:\pedro\development\videoflow\openframeworks\libs\openframeworks\graphics\ofpixels.h(151): warning C4003: not enough actual parameters for macro 'max'

私が知る限り、この警告の後には通常エラーが続きますが、私の場合はすべて問題なく動作します。影響を受けるコードは次のとおりです。

const float srcMax = ( (sizeof(SrcType) == sizeof(float) ) ? 1.f : numeric_limits<SrcType>::max() );
const float dstMax = ( (sizeof(PixelType) == sizeof(float) ) ? 1.f : numeric_limits<PixelType>::max() );

プリプロセッサでNOMINMAXを設定しようとしましたが、openFrameworksはofConstants.hでもNOMINMAXを定義しているため、NOMINMAXがすでに定義されているという警告がたくさん表示されます。

影響を受けるopenFrameworksファイルでNOMINMAXを定義しようとしましたが、同じ警告が表示されます(実際、ofColor.hとofPixel.hに含まれるファイルを分析すると、ofConstants.hが含まれるため、NOMINMAXを定義する必要があります)。

これを解決する方法について何かアイデアはありますか?そうでない場合...何が最善でしょうか?この警告またはNOMINMAXがすでに定義されている一連の警告?

編集:

ところで、私がエラーについて話していたとき、私はこれらについて話していました:警告C4003とエラーC2589とC2059 on:x = std :: neuro_limits <int> :: max();

クリーンなC++プロジェクトで問題を再現しようとすると、これ(警告と2つのエラー)が発生します。しかし、私のopenFrameworksプロジェクトでは、警告が表示されます。だから戸惑う!!

4

4 に答える 4

74

あなたはこれらの古代のマクロに噛まれた最初の人ではありません。彼らはそれらを削除することはできません、それは古いコードを壊すでしょう。そこで彼らは、刺し傷を取り除くための別のマクロを思いついた。次のようにします。

#ifndef NOMINMAX
# define NOMINMAX
#endif
#include <windows.h>
// Rest of your #includes here
//...
于 2011-07-30T15:50:11.600 に答える
48

#undef max関連するファイルの先頭に追加します。

于 2011-07-30T15:24:29.797 に答える
0
#pragma warning (disable: 4003)
于 2019-10-18T23:57:56.223 に答える
0
#ifdef _WIN32
#pragma warning(push)
#pragma warning(disable : 4003) 
#endif

... // code with min/max warning you wish to suppress

#ifdef _WIN32
#pragma warning(pop)
#endif
于 2020-11-10T10:23:14.840 に答える