プロが教える店舗&オフィスのセキュリティ対策術

情報が失われてしまうような代入について警告を出したいのですが、
どういったオプションを用いればよいでしょうか?
コンパイラは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

ご存知の方いらっしゃいましたら、どうかお助け下さい。

A 回答 (2件)

version 4.3では、-Wconversion で警告が出ました。


それ以前のversionでは、おそらく無理です。
    • good
    • 1
この回答へのお礼

4.3の新機能だったんですね。
「以下のオプションを試しましたが、」と書きましたが、GCC4.3では
試していませんでした。
スミマセン。

GCC4.3とNo2様のsplintの両方を試してみて、使いやすそうな方を
検討してみます。
ありがとうございました。

お礼日時:2008/04/18 16:36

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++.
    • good
    • 0
この回答へのお礼

Lintを使う発想はありませんでした。
目から鱗です。

シンプルなソースならsplint、GCC拡張コードとかが含まれる
移植性の低いコードにはGCC4.3といった形でソースコードチェックを
実施してみます。

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

お礼日時:2008/04/18 16:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!