找回密码
 立即注册
收起左侧

warning C4125: 十进制数字终止八进制转义序列

3
回复
8589
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2019-4-3 13:44:51 显示全部楼层 |阅读模式
1Qter豆

warning C4125: 十进制数字终止八进制转义序列
各位大佬,有没有遇到过这个警告的!

开发环境是 vs2015 qt版本5.11.0

发出这个警告的地方是,Qtcreater拖的界面生产的文件里面,中文部分QApplication::translate("AlarmInfo", "\346\212\245\350\255\246\350\256\260\345\275\225", nullptr)

这个警告看起来太烦人了,只想把警告消除完。

大神有解决办法的吗?

十分感谢!

回复

使用道具 举报

累计签到:742 天
连续签到:1 天
2019-4-3 17:49:33 显示全部楼层
消除警告可以通过 PRO 文件来配置,可以直接忽略所有的警告 ~
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2019-4-4 09:47:57 显示全部楼层
Since 发表于 2019-4-3 17:49
消除警告可以通过 PRO 文件来配置,可以直接忽略所有的警告 ~

我把警告等级调到4级,就是为了真正的消除所有警告,不是屏蔽
回复

使用道具 举报

尚未签到

2019-9-11 19:53:43 显示全部楼层
关于msvc-C4125的含义请自己上微软网站查阅文档。
Qt MOC自动生成的ui_xxxx.h文件确实可能会触发msvc编译器的/W4等级C4125警告。
ui文件在MOC时为了兼容性将所有非ANSI字符转换为8进制表示的UTF-8编码的c-style字符串,每三个转义字符表示一个UTF-8编码的汉字.
你上面这段12个转义8进制字符就用于表示4个UTF-8的字符“报警记录”。
然而你提到的这串字符并不会触发C4125警告,真正触发C4125的条件是某个非ANSI字符与数字字符(属于ANSI字符)相邻,也就是在某个8进制转义字符之后紧跟一个数字,比如“报警记1”的转义字符序列"\346\212\245\350\255\246\350\256\260\345\275\2251",注意到最后的“\255”之后紧跟了一个数字“1”,因此触发了C4125。
如果紧跟8进制转义字符后的不是数字而是其他ANSI字符,或数字不是紧跟在8进制转义字符后则不会触发C4125。
C4125是为了提醒程序员确保在8进制转义字符是3位数字,如果有比3位数字更多的数字则可能是程序员写错。
弄清楚这些之后就知道想在QT+VS里面避免C4125的方法只有3个:1.在Qt Designer内使用全英文,之后在通过linguist翻译到中文;2.在Designer内不要让数字紧接中文字符或标点出现;3.不使用Qt Designer,手撸界面代码。

显然这是不现实的,也是没必要的。

形而上学是不可取的,知其然更要知其所以然,在这里直接屏蔽掉C4125警告就行了,如果你代码里的其他地方人为使用了8进制转义字符的话可以临时开启C4125验证一下,然后再关掉。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了