g++编译类型转换报错,怎么屏蔽

勤奋的执着 2018-07-20 07:15:10
代码里面已经增加了忽略告警:
#pragma warning(disable : 4133)
#pragma warning(disable : 4996)
#pragma warning(disable : 4244)
#pragma warning(disable : 4013)
#pragma warning(disable : 4033)
#pragma warning(disable : 4716)
#pragma warning(disable : 4312)




void GetFileName(char *filename,char *pathName);


UINT8 sValue[512]={0};

GetFileName("conf.txt",sValue);








编译选项有-Wall,但是 编译的时候依然报类型转换错误。。

error: invalid conversion from ‘UINT8* {aka unsigned char*}’ to ‘char*’ [-fpermissive]


因为这种自定义的UINT8类型比较多,报错的地方也比较多,请问下,需要使用g++的哪个编译项可以将错误转换为告警呢
...全文
1259 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
丁劲犇 2018-07-23
  • 打赏
  • 举报
回复
gcc 的类型约束比较强。这个编译选项还真的没有用过,应该是默认字符为unsigned就可以。
或者,替换所有 UINT8 为 INT8 似乎可以。
勤奋的执着 2018-07-23
  • 打赏
  • 举报
回复
引用 1 楼 vnvlyp 的回复:
unsigned char *, signed char *和char *本来就是不兼容的类型,不想到处写cast就重载你的函数

void GetFileName(char *filename,char *pathName);

void GetFileName(char *filename,UINT8 *pathName)
{
GetFileName(filename, reinterpret_cast<char *>(pathName));
}



额,很多地方用到,这个改起来工作量就大了,我记得有编译选项是将这些类型转换变成告警的,请问下是哪个编译选项~
vnvlyp 2018-07-20
  • 打赏
  • 举报
回复
unsigned char *, signed char *和char *本来就是不兼容的类型,不想到处写cast就重载你的函数

void GetFileName(char *filename,char *pathName);

void GetFileName(char *filename,UINT8 *pathName)
{
GetFileName(filename, reinterpret_cast<char *>(pathName));
}

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧