質問 |
||
| 質問者:jjk65536 | GCCで暗黙の型変換の警告を出したい | |
|---|---|---|
困り度:
|
情報が失われてしまうような代入について警告を出したいのですが、 どういったオプションを用いればよいでしょうか? コンパイラはGCCの3.x系か4.x系でお願いします。 以下のようなソースで型変換に関する警告がほしいんです。 --- test.c --- #include <stdio.h> int main(void) { int a = 66000; short b; b = a; // <- 暗黙の型変換 printf("%d\n", b); return 0; } 実行結果 $ ./test 464 以下のオプションを試しましたが、上記のソースでは 何の警告も出ませんでした。 -W -Wall -Wconversion -Wimplicit ご存知の方いらっしゃいましたら、どうかお助け下さい。 |
|
質問投稿日時:08/04/18 13:45 質問番号:3956989 |
||
回答良回答10pt |
|
| 回答者:hidebun | http://d.hatena.ne.jp/yupo5656/20040830/p2 のように、警告が出なかったようですね。 このブログの方は、splintというコードチェックツールを紹介されていましたが。 #1さんが書かれているように、4.3から警告できるようになったようです。 GCC 4.3 Release Series(Changes, New Features, and Fixes): http://gcc.gnu.org/gcc-4.3/changes.html The -Wconversion option has been modified. Its purpose now is to warn for implicit conversions that may alter a value. This new behavior is available for both C and C++. |
|---|---|
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| |
回答日時:08/04/18 15:16 回答番号:No.2 |
|
| この回答へのお礼 | Lintを使う発想はありませんでした。 目から鱗です。 シンプルなソースならsplint、GCC拡張コードとかが含まれる 移植性の低いコードにはGCC4.3といった形でソースコードチェックを 実施してみます。 ありがとうございました。 |
回答良回答20pt |
|
| 回答者:colder | version 4.3では、-Wconversion で警告が出ました。 それ以前のversionでは、おそらく無理です。 |
|---|---|
| 種類:回答 どんな人:一般人 自信:自信あり |
|
| |
回答日時:08/04/18 14:47 回答番号:No.1 |
|
| この回答へのお礼 | 4.3の新機能だったんですね。 「以下のオプションを試しましたが、」と書きましたが、GCC4.3では 試していませんでした。 スミマセン。 GCC4.3とNo2様のsplintの両方を試してみて、使いやすそうな方を 検討してみます。 ありがとうございました。 |