我怎样才能避免海湾合作委员会的警告为纯" char的"于:" unsigned char型"或QUOT;符号字符"转换? [英] How can I avoid gcc warning for plain "char" to : "unsigned char" OR "signed char" conversion?
问题描述
我的默认字符类型是无符号的字符作为在海湾合作委员会选项(-funsigned-CHAR GCC)的设置。所以,可以说,当我需要无符号的字符,在code,我可以使用字符。但我得到了(字符*)和(无符号字符*或符号字符*)之间的转换警告:
的错误:在通过测试2的参数1指向目标符号不一致
。
我如何才能避免警告当我通过无符号字符*变量为char *(知道我syetem具有默认的无符号的字符由编译器选项设置)?
静态无效测试2(字符*一)// char是deafult无符号由-funsigned-CHAR gcc的选项设置
{
}TEST1无效(无效)
{
//这个传球,但如果我将其更改为无符号的字符(或符号字符')失败
//我不希望它失败无符号的字符C,因为默认情况下char是无符号的。
焦C = 65;
TEST2(和C);
}
开关 -funsigned-CHAR
和 -fsigned-CHAR
不引用的char *
。
您可以使用 -Wno指针符号
来关闭您将收到警告。
My default char type is "unsigned char" as set in the gcc option (-funsigned-char gcc). So arguably I can use "char" when I need "unsigned char" in the code. But i am getting warning for conversion between (char*) and (unsigned char* or signed char*):
"error: pointer targets in passing argument 1 of 'test2' differ in signedness"
.
How can I avoid warning when I pass unsigned char* variable to char* (knowing that my syetem has default unsigned char as set by compiler option)?
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);
}
The switches -funsigned-char
and -fsigned-char
do not refer to char *
.
You might use -Wno-pointer-sign
to switch off the warning you receive.
这篇关于我怎样才能避免海湾合作委员会的警告为纯" char的"于:" unsigned char型"或QUOT;符号字符"转换?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!