指针通过' unpack_code'的参数3。签名不同[-Wpointer-sign]

时间:2016-01-02 16:31:48

标签: c

我有一个很长的程序,当我尝试运行它时,它没有编译并返回255,总会出现两个警告:

2015-01-07 19:42:52

搜索后我发现** p_ch_beg参数可能会导致问题(如果我正确),但我不知道该怎么做。请帮助纠正下面的脚本

warning: pointer targets in passing argument 3 of 'unpack_code' differ in signedness [-Wpointer-sign]

In file included from read_chn.c:3:0:
read_chn.h:104:5: note: expected 'int *' but argument is of type 'unsigned int *'

1 个答案:

答案 0 :(得分:0)

  

搜索后我发现** p_ch_beg参数可能导致问题(如果我正确的话)

您的诊断不正确。 p_ch_beg是参数1.您的警告消息告诉您问题是参数3:

  

警告:指针传递参数3 ' unpack_code'签名不同

参数3是int *p_code。警告告诉你的是,这个参数应该是指向 int 的指针,但你指的是指向 unsigned int的指针而不是。

您有两种方法可以解决此问题。选择一个:

  • bit_buffer的类型从unsigned int数组更改为int数组。
  • int *p_code更改为unsigned int *p_code

P.S。在您的示例中,参数2也不正确。 &par> chbit将评估为int(如果您很幸运;它是技术上未定义的行为),但参数类型为int *(指向int的指针})。您的意思是&par->chbit吗?