部分代码莫名不被执行?看看编辑器文件编码格式

博主在Qt中遇到程序不显示图像的问题,通过排查发现是中文注释引起的。问题出在“提取法”这三个字,由于不同编码格式导致“提取法”转义,使得注释无法正常结束。更改编码格式后问题解决,提醒开发者注意编码兼容性问题。
摘要由CSDN通过智能技术生成

Qt里随手写了一段代码,如下:

按道理,程序顺序执行到waitKey(0)处,会停下等待按键,并显示名为edges的图像,但怎么都不显示。

我加了断点,发现直接跳过,根本不运行这段代码。

完了,怀疑人生了。思考人生时,突然看见顶行的中文额外耀眼,大概猜到是文件编码格式问题了。

赶紧删了试试,果不其然,可以了。正常的世界观又回来了。不过其他地方也有中文注释,怎么偏偏这里不行呢?

遵循着求是的原则,简单研究一下。我先删除了“边缘”二字,发现还是不行。加回来又删除了“法”字,发现可以了。看来就是“提取法”在搞事情。

但为啥呢?我默默打开记事本,把“提取法”三个字复制进去(QT编辑器和记事本默认都是UTF-8编码),如下图所示。注意右下角UTF-8编码。

关键来了,我把记事本编码格式改为ANSI编码,变成了如下:

原来是“提取法”三个字把“*”转义成了“?”,导致前面的“/*”匹配不到结束的“*/”,所以就一直注释下去了。

我又试了“提法”、“取法”、“提取”都没事,偏偏“提取法”出事了,还被我赶上了,那就记录下来吧。

总结一下,编译器可能采用与代码编辑器不同的编码格式,而这可能导致各种各样的隐晦问题,以上只是其中之一。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值