6

次のコードは VS2010 では機能しません。理由は何ですか?

#include <limits>
#include <windows.h> // if I remove this line, it is okay.

int main()
{
    std::numeric_limits<int>::min();
    return 0;
}

VC の空のコンソール プロジェクトを作成し、上記のように main.cpp を追加しました。これが理由?別の種類のプロジェクトを作成する必要がありますか? ありがとう。

皆さんの助けに感謝します。問題は、私がvld.hと をlimits一緒に使用していることにあります。私はvld.h自分で問題を見つけようとして読んでいます。いくつかのテストの後、問題は含まれてwindow.hいるにある可能性があることがわかりましたvld.h。ググるのを忘れてすみません。個人的には、stackoverflow は、私のような新しいプログラマーに対する皆さんの親切な支援に非常に役立つと思います。

4

2 に答える 2

15

これは、 で定義された(実際には、より正確には に含まれている) 不幸なmaxマクロによって引き起こされる既知の問題です。含める前に定義すると、問題が解決するはずです。例えば:windows.hwindef.hwindows.hNOMINMAXwindows.h

#define NOMINMAX
#include <windows.h>
于 2013-02-02T00:59:53.007 に答える
3

#define NOMINMAXが機能しない場合もあります (そのような例を見たことがあり#undef MINます) #undef MAX

また、VS2010 を使用しているため、通常、ウィンドウにこのようなプリプロセッサの回避策を配置し、stdafx.hそれらを常に繰り返さないことをお勧めします。

于 2013-02-02T13:23:17.110 に答える