dnajx 发表于 2024-10-28 09:23:09

遇到循环队列问题

本帖最后由 dnajx 于 2024-10-28 10:41 编辑

stc32g12k128 串口收发与环形队列 学习


遇到一个问题,请给予解答,谢谢


入队10个字符
遍历队列,遍历输出10个字符没有问题,就是在最后多了一个‘?’

这时如果定义一个无用的变量int或char型,再遍历队列的时候,后面的“?”就没有了

为什么会这样——定义一个无用的变量,‘?’就没有了?

晓飛飛 发表于 2024-10-28 09:37:53

具体看你使用了什么类型处理字符,如果用到string类型,结尾是需要加“\0”的,

dnajx 发表于 2024-10-28 09:55:51

本帖最后由 dnajx 于 2024-10-28 10:03 编辑

晓飛飛 发表于 2024-10-28 09:37
具体看你使用了什么类型处理字符,如果用到string类型,结尾是需要加“\0”的, ...
加不加“\0”,没有区别。我就奇怪了,加个根本没有使用的变量就没有了最后的‘?’



DebugLab 发表于 2024-10-28 10:50:20

可能是编译器优化的原因
串口收发参考:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4598

dnajx 发表于 2024-10-28 12:04:12

本帖最后由 dnajx 于 2024-10-28 12:29 编辑




dnajx 发表于 2024-10-28 12:20:49

本帖最后由 dnajx 于 2024-10-28 12:44 编辑

用STC提供的串口程序,学习循环队列相关知识。源程序有u8RX1_Buffer; //接收缓冲,由于采用循环队列,把串口部分单独一个子程序,这一句就被删除了,遍历输出就出现这个问题。最后反复比对定位这一句。尝试改变变量名和类型,都没有出现?号。最后在主程序里,随便定义一个变量,也没有出现?号

期间编译器等环境都没有改变,用的模块是降龙棍。这到底是因为什么?很是奇怪,请您帮忙解惑,谢谢
页: [1]
查看完整版本: 遇到循环队列问题