• ベストアンサー

警告をださずにポインタにnullを渡す方法は?

こんにちは。 ポインタ型の引数にNULLを渡してやりたいのですが 以下のような警告がでてしまいます。 test.c: In function 'test_': test.c:14: 警告: passing argument 2 of 'test' makes pointer from integer without a cast 問題の箇所は以下のように書いてます。 【test.c】 ~省略~ /** プロトタイプ **/ 7 void aaa(int,int*,int*); ~省略~ 14 aaa(0,NULL,&tv); NULLを渡したい場合、警告をださないように スマートに記述するにはどうしたらいいでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

もともとの警告に立ち返ります。 >test.c:14: 警告: passing argument 2 of 'test' makes pointer from integer without a cast これは、本来は整数型を求めているところに、 キャスト無しのポインタを渡している、ということです。 aaa関数の第二引数の型はint *とのことでしたが、正しいですか? やはり、#2さんが書かれたとおり、ソース全体を見せてくださるのがよいと思います。

hor
質問者

お礼

質問に書いたのは実際のソースではなく、簡略したものでした。 ご指摘頂いてからソース全体を見て確認したところ、 大変恥ずかしい見落としがありました。 short NULL; これです・・・・。 警告でて当然ですよね・・・。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

なんというか, プログラム全体を見た方が早い気がする. あるいは, その警告が出るような「なるべく簡単」なプログラムでもいい. あと, コンパイラや OS の情報 (バージョンなど) もついでに.

すると、全ての回答が全文表示されます。
回答No.1

警告文は「引数の型が違う」と警告しているので、NULLの定義にもよるけどキャストしてやるだけでは? aaa( 0, (int *)NULL, &tv );

hor
質問者

補足

回答ありがとうございます! 早速試してみましたが・・・ 警告: passing argument 2 of 'aaa' from incompatible pointer type がでちゃって駄目でした。

すると、全ての回答が全文表示されます。

専門家に質問してみよう