如何避免gcc警告简单的"char":"unsigned char"或"signed char"转换?

Lun*_*oms 3 c linux unsigned signed gcc

我的默认字符类型是gcc选项(-funsigned-char gcc)中设置的"unsigned char".所以当我在代码中需要"unsigned char"时,我可以使用"char".但我收到警告(char*)和(unsigned char*或signed char*)之间的转换:

"error: pointer targets in passing argument 1 of 'test2' differ in signedness" .

当我将unsigned char*变量传递给char*时,我怎么能避免警告(知道我的syetem有编译器选项设置的默认unsigned 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);
}
Run Code Online (Sandbox Code Playgroud)

alk*_*alk 7

开关-funsigned-char-fsigned-char没有参考char *.

您可能会-Wno-pointer-sign用来关闭收到的警告.