2009-07-01 7 views
5

GCCは、 "& &"/"||"の代わりに "and"/"or" C++コードで。しかし、私が期待したように、多くのコンパイラ(特にMSVC 7)はこれをサポートしていません。 GCCがこれを許しているという事実は、複数のプラットフォーム上で同じコードベースで作業する異なる開発者を抱えていることと、PythonとC++開発の間を行き来する人がいるため、これらの "エラー""and"または "boolean operator use for gcc"のサポートを無効にすることはできますか?

理想的には、適切な構文を使用することを忘れないでください。ただし、時々混乱するような状況では、GCCがスライドさせないと本当にうれしいでしょう。誰もがこれにアプローチするためのアイデアを持っていますか?

もし "and"と "or"が単に#defineなら、GCCを使うとき#undefできますが、より基本的なレベルでコンパイラに組み込まれている可能性が高いと心配します。

ありがとうございました。

答えて

16

これらはC++標準の一部です。たとえば、this StackOverflow answer(標準の関連部分を引用しています)を参照してください。

同じ質問のもう1つの答えは、反対を行う方法について言及しています。MSVCで動作させる方法です。

GCCで無効にするには、-fno-operator-namesを使用してください。そうすることで、実際にはC++の非標準的な方言に切り替えることになり、標準準拠のコンパイラで正しくコンパイルできないコードを書くことになる危険性があることに注意してください(たとえば、通常は予約されている名前の変数)。

0

コード解析ツールはありますか? FxCopに似た何か? FxCopを使用すると、独自のルール(& &をチェックしてください)を作成し、コンパイル前の段階で実行するように設定できます。

7

これらの単語は、ヘッダーを含めずにC++では標準です。

ヘッダー<iso646.h>を含めると、単語はCの標準です。

MSVCは標準をサポートしていないためサービスを提供していません。

ただし、ツールを使用してキーワードを使用しないようにすることはできます。そしてそれはコーディングの指針となることができ、愚かな移植性のミスをしないように素早くチームを鍛えることができます。この問題を避けることはそれほど難しいことではありません。

-3

-pedantic-errors他のgnu-ismsの中でもこれが役に立ちます。

+1

-1:これはgnu-ismではなく、言語標準の一部です。 –

関連する問題