我的默认字符类型是“无符号字符”(在gcc选项中设置为-funsigned-char gcc)。因此,可以说当我需要“无符号字符”时,可以使用“char”在代码中。但是,当我在(char*)和(unsigned char*或signed char*)之间进行转换时,会收到警告:
“error: pointer targets in passing argument 1 of 'test2' differ in signedness”。
在我的系统中,编译器选项将默认的字符设为无符号字符,我如何在将unsigned char*变量传递给char*时避免警告呢?
“error: pointer targets in passing argument 1 of 'test2' differ in signedness”。
在我的系统中,编译器选项将默认的字符设为无符号字符,我如何在将unsigned char*变量传递给char*时避免警告呢?
static void test2(char* a) //char is unsigned by deafult as set by -funsigned-char gcc option
{
}
void test1(void)
{
// This passes, but if i change it to unsigned char (or 'signed char') it fails
// I dont want it to fail for "unsigned char c" since default char is unsigned.
char c = 65;
test2(&c);
}
gcc (Debian 4.4.5-8) 4.4.5
编译时,无论是否使用-funsigned-char
选项,均不会出现警告。 - alkchar
无符号,但它并不是unsigned char
!类型char
、signed char
和unsigned char
仍然是不同的类型。 - Bo Persson