のVisual StudioのopenFrameworks 007プロジェクトをコンパイルしながら、私は次の警告を持っている2010 SP1:私はこれを言うことができるものから、警告C4003:マクロ '最大' のために十分ではない実際のパラメータ - のVisual Studio 2010のC++
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());
IプリプロセッサにNOMINMAXを設定しようとしたが、openFrameworksもofConstants.hにNOMINMAXを定義するので、私はNOMINMAXが既に定義されている警告の束を得ます。
影響を受けるopenFrameworksファイルでNOMINMAXを定義しようとしましたが、同じ警告が表示されます(実際にはofColor.hとofPixel.hに含まれるファイルを分析すると、ofConstants.hを含むファイルになります)定義されている)。
これを解決する方法はありますか?あなたがしなければ...何が最善でしょうか? NOMINMAXが既に定義されているこの警告または警告の束?
EDIT:
ところで私はこれらについて話していたエラーについて話したとき:warning C4003 and errors C2589 and C2059 on: x = std::numeric_limits<int>::max();
私はクリーンなC++プロジェクトで問題を再現しようとした場合、私はこの(警告プラス2エラー)を取得します。しかし、私のopenFrameworksプロジェクトでは、警告を受け取るだけです。それが私が混乱する理由です!
最初に '#ifdef max'を忘れないようにしてください。 – Puppy
@DeadMGなぜですか?いいスタイルですか?私はIdeOneで試してみましたが、何の警告もエラーもありませんでした。 –
問題は、問題のファイルが自分のコードではないということです。それはopenFrameworksのコードであり、ライブラリが更新されると、ライブラリのソースコードを変更することは後でPITAになる可能性があります。 – petersaints