C++中voliate关键字

C++中voliate关键字voliate变量是随时变化的,用voliate修饰的运算,编译器不进行优化,以免出错。对于一个普通变量,为提高存取速率,编译器会先将变量的值存储在一个寄存器中,以后再取变量值时,就存寄存器中取出。但是用voliate修饰的变量,就说明这个变量会发生意向不到的改变。也就是说,优化器每次在读取该值时,不会假设这个值了,每次都会小心的在读取这个变量的值,而不是在寄存器中取保留的备份。那么,…

大家好,又见面了,我是你们的朋友全栈君。

voliate变量是随时变化的,用voliate修饰的运算,编译器不进行优化,以免出错。

对于一个普通变量,为提高存取速率,编译器会先将变量的值存储在一个寄存器中,以后再取变量值时,就存寄存器中取出。

但是用voliate修饰的变量,就说明这个变量会发生意向不到的改变。也就是说,优化器每次在读取该值时,不会假设这个值了,每次都会小心的在读取这个变量的值,而不是在寄存器中取保留的备份。

那么,一个参数可以同时被const和voliate修饰吗?
答案是可以的,如:只读的状态寄存器。它是voliate,是因为它可能会发生意想不到的改变;它是voliate,表示程序不应该试图去改变它。

voliate关键字的应用场景
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134639.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ebpf_ebpf需要修改内核吗

    ebpf_ebpf需要修改内核吗eBPF简史BPFBPF的全称是BerkeleyPacketFilter,顾名思义,这是一个用于过滤(filter)网络报文(packet)的架构。过滤(Filter):根据外界输入的规则过滤报文;复制(Copy):将符合条件的报文由内核空间复制到用户空间;?packet报文buffer百度百科在计算机领域,缓冲器指的是缓冲寄存器,它分输入缓冲器和输出缓冲器两种。前者的作用是将外设送来的数据暂时存放,以便处理器将它取走;后者的作用是用来暂时存放处理器送往外设的数据。有了数控缓冲器,

    2022年9月21日
    2
  • 单射双射与满射

    单射双射与满射单射(injection):每一个x都有唯一的y与之对应;满射(surjection):每一个y都必有至少一个x与之对应;双射(又叫一一对应,bijection):每一个x都有y与之对应,每一个y都有x与之对应。把x比作萝卜,y比作坑:单射就是一个萝卜一个坑,有的坑有可能没萝卜;满射就是所有坑都有萝卜,有的坑可能有不止一个萝卜;双射就是严格的一个萝卜一个坑,一个坑一个萝卜,所有萝卜都有坑,所有坑都有萝卜。…

    2022年6月6日
    38
  • IJ实现侧边栏单独搜索

    IJ实现侧边栏单独搜索第一步任意点击一个第二步输入要搜索的单词

    2022年6月27日
    26
  • Java学习之final与匿名内部类篇

    Java学习之final与匿名内部类0x00前言续上几篇文章,得知子类继承父类后是可以在父类的基础上进行改写的,那么在程序中有些东西可能是不能让我们给轻易给改动的,那么Java给提供了final

    2021年12月11日
    57
  • ubuntu16.04安装cuda9.0(ubuntu18安装nvidia驱动)

    (安装:NVIDIA-384+CUDA9.0+cuDNN7.1)Ubuntu下安装CUDA需要装NVIDIA驱动,首先进入NVIDIA官网,然后查询对应NVIDIA驱动是否支持你电脑的型号。第一步、安装NVIDIAGPU驱动去NVIDIA官网查询是否支持我电脑的GPU如下 可以看出:GeForce700MSeries(Notebooks):GeForceGTX…

    2022年4月14日
    63
  • 如何将int类型转换为char_int类型转换成char类型

    如何将int类型转换为char_int类型转换成char类型近来面试遇到一个问题,通过控制台输入一个12位的数字,然后进行一些计算,然后被困在如何把char类型的数字转换成int类型。通过搜索,找到两个解决办法。1、把char型转换成int类型      for(inti=0;i<str.length();i++) {     chartemp_char=str.charAt(i); //把字符转换…

    2022年9月25日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号