[C言語]pointer targets in assignment differ in signednessの対処法
原因
同じ型で異なるsignのポインタ同士で代入をやるとこの警告が出るみたいです。z.next_out = s;
左辺のz.next_outはBytef型のポインタ、右辺のsはchar型のポインタでした。ためしに下記のようなサンプルコードを書いたら簡単に再現できました。
warning_pointer_signedness.c
#include <stdio.h>
int main()
{
int *ip;
unsigned int *uip;
uip = ip;
return 0;
}
$ gcc -Wall warning_pointer_signedness.c
eval/warning_pointer_signedness.c: In function 'main':
eval/warning_pointer_signedness.c:21: 警告: pointer targets in assignment differ in signedness
eval/warning_pointer_signedness.c:21: 警告: 'ip' is used uninitialized in this function
対処法
とりあえず型変換をすれば警告は出なくなりました。z.next_out = (Bytef *)s;
Bytef, signed/unsigned char,あたりの意味はわかっていません><
カテゴリ:
C