我是靠谱客的博主 落寞宝贝,最近开发中收集的这篇文章主要介绍关于 在Qt中的timerEvent信号中设置QCustomplot的日期时间轴范围乱蹿(编译器优化变量volatile) 的解决方法Qt开发专栏:各种问题解决(点击传送门)问题相关博客尝试原因解决关键字volatile,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

若该文为原创文章,转载请注明原文出处
本文章博客地址: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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部