警告の対処(ポインタとNULLの比較)
1. 目的
この記事では、下記警告が発生した時に、どう対処したのか、またその理由について記載する。
出た警告文書
・warning: comparison between pointer and integer ('int' and 'void *')
目次
2. 警告理由
warning: comparison between pointer and integer ('int' and 'void *')
これは、ポインタとNULLをif文で比較したことで、NULLとポインタの型が違う場合、発生する。
警告発生個所
if(*pa != NULL){
3. 対処
NULLを比較するポインタの型でキャストすることにより、NULLとポインタの型を合わせる。
修正した内容
if(*pa != (int)NULL){
char型と比較した場合、下記エラーになる。
この場合も、同じようにキャストすればよい。
warning: comparison between pointer and zero character constant
参考プログラム
#include <stdio.h> int main(void){ // Your code here! /// 変数宣言 int *pa; ///< ポインタ宣言 int x; ///< 変数宣言 pa = &x; ///< paにxのアドレスを指定 *pa = 10; ///< paに10を入れる。 // if(*pa != NULL){ ///こっちだとエラー if(*pa != (int)NULL){ printf("pa=%d\n",*pa); printf("x=%d\n",x); } }
実行結果:https://paiza.io/projects/rxYkkqME4LHINkQrY2NTQQ