私のプログラムの中で他に先にNOMINMAX
を定義するとどんな問題が起こるでしょうか?Visual C++のNOMINMAXで起こりうる問題
私が知る限り、<Windows.h>
はmin
とmax
というマクロを定義していないので、多くの場合STLと競合します。 std::min()
,std::max()
またはstd::numeric_limits<T>::min()
が解決されました。
Windows固有のコードと従来のコードのみが問題を抱えていることを前提にしていますか? ほとんどすべてのライブラリは、min()
とmax()
にマクロとして定義されるべきではありませんか?
編集:他のWindowsヘッダーに問題はありますか?
ありさえWindows固有のコードで、問題があることが、それは可能ですべきではありません動作しないコードがいくつか存在することを示します。あなたはそれを試してみて、何かエラーがあるのを見てみませんか? –
私たちの内部コードでは、 'NOMINMAX'がうまくいきます。しかし、このライブラリは外部の開発者によっても使用されており、私はそのアプリケーションを壊すことは望んでいません。 – Manuel
'#define'はコンパイル時の操作です。ライブラリはリンクされており、コンパイルされていません。つまり、独自の '#define'を持つことができます。ライブラリユーザーは '#define'd' NOMINMAX'を見ません。 – MSalters