我怎样才能避免海湾合作委员会的警告为纯" char的"于:" unsigned char型"或QUOT;符号字符"转换? [英] How can I avoid gcc warning for plain "char" to : "unsigned char" OR "signed char" conversion?

查看:133
本文介绍了我怎样才能避免海湾合作委员会的警告为纯" char的"于:" unsigned char型"或QUOT;符号字符"转换?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的默认字符类型是无符号的字符作为在海湾合作委员会选项(-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-signto switch off the warning you receive.

这篇关于我怎样才能避免海湾合作委员会的警告为纯" char的"于:" unsigned char型"或QUOT;符号字符"转换?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆