2016-06-29 3 views
0

「char」型を符号なしとして扱うコンパイラフラグ(-DCHAR_AS_UNSIGNEDのようなもの)を渡す古いコンパイラ用のレガシープロジェクトがあります。コンパイラは、Eclipseではなくコマンドラインで個別に実行する独自のものです。 char *ではなく文字列にunsigned char *を使う古いコードがたくさんあります。デフォルトでは、Eclipseはこれを処理し、char *を期待するルーチンにunsigned char *を渡すことが正しいと警告する。 Eclipseでこれらを無視し、コンパイラのように扱う方法はありますか?Eclipse CDT - 「char」を符号なしとして扱う

+0

コード解析をオフにすることはありますか? 'Preferences-> C/C++ - > Code Analysis'(コンパイラが良い警告を出すので、私はいつもオフにしています) – Galik

+0

残念なことにかなり大きなハンマーです。私が働いている間にリアルタイムでいくつかのエラーを見るのはとても便利です。私はコード分析設定の "無効な引数"の設定を "エラー"ではなく "情報"に変更しましたが、コンパイル時までエラーをマスキングするリスクもあります。 –

+0

C++標準では、 'char'は、実装の裁量で、符号付きまたは符号なしの整数型として動作しますが、いずれの場合でも' signed char'と 'unsigned char'の両方とは異なる型です。つまり、 'unsigned char *'を 'char *'を期待する関数に渡すことは有効ではありません。あなたのコンパイラがこれを受け入れるならば、それはあなたのコンパイラによってサポートされている非標準の拡張であり、CDTはこれをサポートしていません。 – HighCommander4

答えて

0

最も近いのは、charunsigned charと定義しているプロジェクト(プロジェクト - >プロパティ - >パスとシンボル - >シンボル)にグローバルに定義されたシンボルを追加することでした。

ほとんどの場合、私が関心を持つレガシーコードのほとんどは、未解決のcharを使用していないので(この回避策に悩まされるでしょう)、ほとんど機能します。それは、特定の幅の整数型(たとえばU8の場合はtypedef unsigned char U8と定義されています)のtypedefでうまく動作するように見えます。このソリューションは、unsigned charがファイルに使用されている場合は、unsigned unsigned charに展開されるため、うまく動作しません。

関連する問題