• 締切済み

gcc -c -Wconversionでwarningが消えません

gcc version 2.96 20000731 (Red Hat Linux 7.0) でコンパイルオプション -c -Wconversionでwarningが消えません。 warning: passing arg 1 of `関数名' with different width due to prototype とwarningが出るのですが、プロトタイプ宣言の引数の型にちゃんとキャストして渡しているのですが…ちなみにプロトタイプ宣言の引数自体がint型とポインタだとwarningは出ません。-Wconversionとはいったい何者なのでしょうか? すべての関数の引数の型をint型とポインタに変更すればwarningは消せるのですが、なんか違う気がします。 かなり漠然的な質問で申し訳ありませんがどなたか知っていれば教えてください。宜しくお願い致します。

みんなの回答

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.2

変換不可能な場合にはコンパイラはエラーを出しますが、変換可能な場合にはできるだけ変換しようとします。このときこのWarningが出力されます。Worningをなくするには引数をキャストしてしまうか、プロトタイプ宣言を追加することになると思います。

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

>-Wconversionとはいったい何者なのでしょうか? 型変換が行われたことを警告するメッセージを表示するオプションです。 正しくキャストしてintに変換していますか。または元の型はintに変換可能なものですか。

yunakamura
質問者

お礼

素早い回答ありがとうございます。 >正しくキャストしてintに変換していますか。または元の型はintに変換可能なものですか。 引数がint型の場合には変換しています。 関数の引数がshort,char型の場合はintには変換していません、 変換すると違うのが出る気がします。 -------------------man からの抜粋-------------------------------------- -Wconversion 同じ引数が与えられた時に、プロトタイプが存在する場合とプロトタイプが存在しな い場合とで、異なった型変換を引き起こす場合について警告します。これは固定小数 点から浮動小数点への変換やその逆、デフォルトの動作と異なる固定小数点引数の幅 や符号の有無の変換が含まれます。 ----------------------------------------------------------------------- 「デフォルトの動作と異なる固定小数点引数の幅や符号の有無の変換」 より、デフォルト(int型、ポインタ型)以外への型変換にはwarningを出すと言う事でしょうか? この解釈で合っていますでしょうか?という事は必ず関数の引数はint型にしなければ ならないのでしょうか?

関連するQ&A