5

「x=++ x」などのシーケンスポイントに関連付けられた未定義の動作の精神では、それは本当に未定義ですか?、どのようにしてコンパイラにそのようなコードについて文句を言わせるのですか?

具体的には、私はVisual Studio2010とXcode4.3.1を使用しています。後者はOSXアプリ用ですが、どちらもこれについて警告していません。VS2010の警告を「すべて」に上げて、これをうまくコンパイルしました。(記録として、VS2010のバージョンは変数に1を追加しましたが、Xcodeのバージョンは変数を変更しませんでした。)

4

1 に答える 1

2

私の知る限り、Visual Studio はそのような状況を検出しません。そして、私は個人的に、それを行うことに多くの意味があるとは確信していません. そのようなかなり明白なケースに対する警告は、ほとんど教育的な価値があると思いますが、実用的な価値はあまりありません。一般に、問題の問題は、 と が同じオブジェクトを指している*p = ++*q場合pなどに発生します。q言うまでもなく、それらはコンパイラによって検出されません。

于 2012-07-07T03:06:58.693 に答える