0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

volatile、register和attribute关键字简介

CHANBAEK 来源:头条号芯片e栈 作者:头条号芯片e栈 2023-03-23 10:45 次阅读

一、volatile关键字

(1)volatile作用

单片机中直接存取原始内存地址,防止编译器的优化,导致声明的变量未被执行。

(2)格式

poYBAGQbu22AK1A4AAAZtn73XGs980.png

(3)表达

pYYBAGQbu3qABnajAAAU2vplCAw203.png

注:如果编译调试中,依旧存在程序被优化现象,可设置降低代码优化等级。


pYYBAGQbu46AJeBXAAB0FQvr5XA694.png

二、register关键字

(1)register作用

这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。

注:注意是尽可能,不是绝对。

poYBAGQbu6GATopHAAAXiddFtzo498.png

用法:为了提高精度,循环的次数越多越好,可以将循环的增量控制定义为寄存器变量register。

(2)格式

poYBAGQbu66ACSw4AAAZUrrh3RU634.png

(3)表达

poYBAGQbu7yAEKGAAAAS783ZCHk981.png

(4)例子

poYBAGQbu8iAfy5ZAAAOryF5flQ727.png

三、attribute关键字

(1)attribute作用用于给声明的数组、变量,指定具体的存储地址位置。

注:①attribute是用来指定变量或结构位域的特殊属性,该关键字后的双括弧中的内容是属性说明。

②at关键字可以用来设置变量的绝对地址,也就是通过这个关键字,指定某个变量处于内存里面的某个给定的地址。

(2)格式

poYBAGQbu9SAPoqQAAAjIHnNx98870.png

(3)表达

pYYBAGQbu-GAdqmqAAAnrQODK0U806.png

指的是,将 array数组的首地址设定为0x0800C000.

注:该声明不可用于函数内的局部变量/形式参数。(函数内局部变量/形式参数,在函数调用时才声明入栈,调用结束后,会被出栈,无法指定具体地址)


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43977

    浏览量

    620861
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • Register
    +关注

    关注

    0

    文章

    36

    浏览量

    13862
  • 关键字
    +关注

    关注

    0

    文章

    37

    浏览量

    6841
  • volatile
    +关注

    关注

    0

    文章

    44

    浏览量

    12953
收藏 人收藏

    评论

    相关推荐

    DSP编程技巧之17---非常“关键”的关键字

    的设计产生预期的结果。C28x的编译器支 持所有的标准C89的关键字,包括const、volatileregister,标准的C99关键字,包括inline和restrict,以及支
    发表于 08-20 11:38

    c语言中 volatile _Bool 关键字说明

    volatile 关键字呢?volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以消除一些代码
    发表于 01-06 10:46

    C++笔记010:C++对C的扩展——register关键字增强

    更多精彩关注微信公众号:依法编程register关键字:请求编译器让变量直接放到CPU内部寄存器里面,而不是通过内存寻址访问,速度快。在C语言中,register修饰的变量不能取地址,去寄存器变量
    发表于 08-11 12:34

    请问关键字volatile该什么时候用?

    这东西的概念我懂,但是实际编程时,关键字volatile该什么时候用啊,求大神来点经验之谈!
    发表于 04-28 09:06

    【原创分享】单片机编程关键字volatile

    很多人来说,根本没见过这个关键字,不知道它的存在。也有很多人知道它的存在,根本没用过,我对它有种“杨家有女初长成,养在深闺无人识”的感觉。那么volatile关键字到底是什么意思呢,怎么用呢?1
    发表于 06-29 11:17

    C语言volatile关键字详解 精选资料分享

    1.volatile和什么有关百度翻译是这样子翻译volatile的:图1-1 百度翻译volatile截图volatile属于C语言的关键字
    发表于 07-22 07:20

    volatile关键字应用场景及示例

    volatile关键字1.应用场景2.示例1.应用场景volatile关键字分析,往往应用在三种场合1)多线程编程共享全局变量的时候,该全局变量要加上
    发表于 08-24 07:21

    Volatile关键字对于嵌入式开发有什么作用呢

    前言在进行嵌入式开发中,我们往往会看到一个名为volatile或者__IO的关键字,那么,它们对于嵌入式开发有什么作用呢?浅析volatile数据类型实际上,__IO和volatile
    发表于 11-05 09:20

    关键字static的作用是什么

    嵌入式面经1.关键字static的作用是什么2.关键字const是什么含意?3.const和宏定义的区别4.关键字volatile有什么含意 并给出三个不同的例子。5.引用和指针有什么
    发表于 11-09 07:23

    C语言volatile关键字之间有什么关系?

    C语言volatile关键字之间有什么关系?
    发表于 11-11 07:01

    嵌入式程序员常见的const、static、volatile关键字

    嵌入式程序员const、static、volatile三个关键字的朴素认识摘要:在C语言程序编写中,const、static关键字是比较熟悉的,volatile
    发表于 12-21 06:08

    在嵌入式中定义变量时volatile关键字的作用是什么?

    在嵌入式中定义变量时volatile关键字的作用?
    发表于 10-24 07:50

    关于volatile关键字对编译器优化的影响

    volatile关键字对编译器优化的影响
    的头像 发表于 02-28 17:15 2643次阅读

    一般什么时候需要使用volatile关键字

    想必大家平时都见过volatile关键字,可是大家知道什么时候需要使用volatile关键字吗?
    的头像 发表于 12-24 17:29 795次阅读

    一文详解volatile关键字

    volatile 是易变的、不稳定的意思。和const一样是一种类型修饰符,volatile关键字修饰的变量,编译器对访问该变量的代码不再进行优化,从而可以提供对特殊地址的稳定访问。
    的头像 发表于 02-15 11:54 763次阅读
    一文详解<b class='flag-5'>volatile</b><b class='flag-5'>关键字</b>