2009-08-05 65 views
3

なぜ>?=<?=はVC++で動作しませんか? などですが、gcc/g ++で のようにうまく動作します:a>?=b; は正しい使い方ですか?なぜ>?=と<?=はVC++では動作しませんか?

+3

gccで何が行われますか?以前はこれを見たことがありません。 –

+0

bdonlanが言っているようにこれらが推奨されていない場合は、g ++で警告を出力することが期待されます。私は "-Wall"(すべて警告する、つまりすべての警告を表示する)と警告を生成しないコードを書くようにコンパイルすることをお勧めします。これらの演算子を使用すると、g ++が警告を出力することを誰かが確認できますか? – MatrixFrog

+0

a>?= b <==> a = MIN(a、b) 私はvimをg ++で使い、 "-Wall"でコンパイルしますが、警告は表示されません。 –

答えて

7

これらは、最小値と最大値の古いGC++-specific extensionsです。

6. Extensions to the C++ Languageから:

GNUコンパイラは、C++言語にこれらの拡張機能を提供します(そして、あなたもあなたのC++プログラムでC言語の拡張機能のほとんどを使用することができます)。これらの機能が利用可能かどうかをチェックするコードを記述したい場合は、Cプログラムと同じ方法でGNUコンパイラをテストすることができます:定義済みのマクロ__GNUC__を確認してください。 __GNUG__を使ってGNU C++をテストすることもできます(GNU Cプリプロセッサの「事前定義されたマクロ」のセクションを参照)。

代わりに、あなたはstd::minstd::maxを使用する必要があります。

13

これらの演算子は標準ではなく、GCCでは非推奨です。それらはG ++でもサポートされていません。代わりにstd :: minとstd :: maxを使うべきです。 #define NOMINMAXをdisable the window-specific macrosに矛盾させてください。

関連する問題