我已经阅读了类似的问题,但在这种情况下,我无法找到一个可以帮助我理解此警告的问题。我在尝试学习 C 的第一周,所以提前道歉。
我收到以下警告并注意:
In function 'read_line':
warning: pointer targets in passing argument 1 of 'read_byte' differ in signedness [-Wpointer-sign]
res = read_byte(&data);
^
note: expected 'char *' but argument is of type 'uint8_t *'
char read_byte(char * data)
尝试编译此代码时:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <fcntl.h>
#include <unistd.h>
char read_byte(char * data)
{
if(fs > 0 )
{
int n = read(fs, data, 1);
if (n < 0)
{
fprintf(stderr, "Read error\n");
return 1;
}
}
return *data;
}
uint8_t read_line(char * linebuf)
{
uint8_t data, res;
char * ptr = linebuf;
do
{
res = read_byte(&data);
if( res < 0 )
{
fprintf(stderr, "res < 0\n");
break;
}
switch ( data )
{
case '\r' :
break;
case '\n' :
break;
default :
*(ptr++) = data;
break;
}
}while(data != '\n');
*ptr = 0; // terminaison
return res;
}
int main(int argc, char **argv)
{
char buf[128];
if( read_line(buf) == 10 )
{
// parse data
}
close(fs);
return 0;
}
我删除了无用的部分,包括打开端口和初始化 fs 的部分。