Project_OKI’s diary

エンジニアの勉強ブログ

警告の対処1:warning: comparison between pointer and integer ('int' and 'void *')

警告の対処(ポインタと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