概述
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127857665
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)
Qt开发专栏:各种问题解决(点击传送门)
问题
在开发QCustomplot时,将x轴设置为日期时间轴时,采用tiimerEvent刷新,按照常规在设置轴的范围放在timerEvent中,实际出现日期时间范围乱窜,上图:
相关博客
《关于 在Qt中的timerEvent信号中设置QCustomplot的日期时间轴范围乱蹿(编译器优化变量volatile) 的解决方法》
《关于 国产麒麟系统中双精度double除法编译优化导商变量不变化(代码调整+volatile) 的解决方法》
《关于 国产麒麟系统赋值给双精度double时乘以1.0f编译器优化 的解决方法》
尝试
1.不使用毫秒,使用秒的时候,是正常的,但是移动就是一格一格了;
2.使用毫秒就有问题,并且range范围也不对,添加打印测试,在生成时间和设置范围之间添加打印时ok的;
3.在设置范围之后,replot之前打印,x乱窜,不行;
4.replot后打印,x乱崔,不行
原因
编译器在编译的时候对时间除法进行了优化,导致了不可预期的问题:
解决
x轴的时间点变量添加volatile关键字。
关键字volatile
volatile的本意是“易变的” 因为访问寄存器要比访问内存单元快的多,所以编译器一般都会作减少存取内存的优化,但有可能会读脏数据。当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用volatile,则编译器将对所声明的语句进行优化。(简洁的说就是:volatile关键词影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错)
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127857665
最后
以上就是落寞宝贝为你收集整理的关于 在Qt中的timerEvent信号中设置QCustomplot的日期时间轴范围乱蹿(编译器优化变量volatile) 的解决方法Qt开发专栏:各种问题解决(点击传送门)问题相关博客尝试原因解决关键字volatile的全部内容,希望文章能够帮你解决关于 在Qt中的timerEvent信号中设置QCustomplot的日期时间轴范围乱蹿(编译器优化变量volatile) 的解决方法Qt开发专栏:各种问题解决(点击传送门)问题相关博客尝试原因解决关键字volatile所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复