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

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

3天内不再提示

如何使用C++语法中的volatile

C语言编程学习基地 来源:CSDN博客 作者:小哈龙 2021-09-09 09:38 次阅读

volatile

volatile int i = 10;

volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素(操作系统硬件、其它线程等)更改。所以使用 volatile 告诉编译器不应对这样的对象进行优化。

volatile 关键字声明的变量,每次访问时都必须从内存中取出值(没有被 volatile 修饰的变量,可能由于编译器的优化,从 CPU 寄存器中取值)

const 可以是 volatile (如只读的状态寄存器)

指针可以是 volatile

assert()

断言,是宏,而非函数。assert 宏的原型定义在 《assert.h》(C)、《cassert》(C++)中,其作用是如果它的条件返回错误,则终止程序执行。可以通过定义 NDEBUG 来关闭 assert,但是需要在源代码的开头,include 《assert.h》 之前。

assert() 使用

#define NDEBUG // 加上这行,则 assert 不可用#include 《assert.h》

assert( p != NULL ); // assert 不可用

sizeof()

sizeof 对数组,得到整个数组所占空间大小。

sizeof 对指针,得到指针本身所占空间大小。

#pragma pack(n)

设定结构体、联合以及类成员变量以 n 字节方式对齐

#pragma pack(n) 使用

#pragma pack(push) // 保存对齐状态#pragma pack(4) // 设定为 4 字节对齐

struct test{ char m1; double m4; int m3;};

#pragma pack(pop) // 恢复对齐状态

责任编辑:haq

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

    关注

    3

    文章

    3859

    浏览量

    61297
  • C++
    C++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72878
收藏 人收藏

    评论

    相关推荐

    C/C++代码动态测试工具VectorCAST插桩功能演示#代码动态测试 #C++

    C++代码
    北汇信息POLELINK
    发布于 :2024年04月18日 11:57:45

    vb语言和c++语言的区别

    )是由Microsoft开发的一种面向对象的事件驱动编程语言。它的设计目标是简化编程过程,让初学者也能快速上手。与之相比,C++语言是一种通用的、面向对象的编程语言,其设计目标是提供高性能的系统级编程。 语法: VB语言的语法
    的头像 发表于 02-01 10:20 552次阅读

    volatile的原理

    今天来了解一下面试题:你对 volatile 了解多少。要了解 volatile 关键字,就得从 Java 内存模型开始。最后到 volatile 的原理。 一、Java 内存模型 (JMM) 大家
    的头像 发表于 10-10 16:33 197次阅读
    <b class='flag-5'>volatile</b>的原理

    嵌入式C/C++语言精华文章集锦

    /C++编程,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。 经验不足的开发人员往往将所有需要传送的内容依顺序保存在 char 型数组,通过
    发表于 09-25 08:00

    书本里不会讲到的volatile - 第15节

    volatile
    充八万
    发布于 :2023年09月01日 19:43:46

    书本里不会讲到的volatile - 第14节

    volatile
    充八万
    发布于 :2023年09月01日 19:42:56

    书本里不会讲到的volatile - 第4节

    volatile
    充八万
    发布于 :2023年09月01日 19:34:33

    C++演示的推理速度比Python演示的推理速度更快是为什么?

    在同一主机机上采用相同型号的 Ran Object Detection C++ 演示 和 对象检测 Python 演示 。 C++ 演示的推理速度比 Python 演示的推理速度
    发表于 08-15 06:52

    C++中常用关键字详解(2)

    C++中,volatile是一个关键字,用于修饰变量,告诉编译器该变量的值可能在程序流程之外被意外修改,因此编译器不应该对该变量进行优化(如缓存变量值或重排指令顺序)。
    发表于 08-08 16:15 187次阅读

    【开源三方库】Aki:一行代码极简体验JS&amp;C++跨语言交互

    提供解决方案,提供了复杂度仅为O(1)级别的极简语法糖使用方式,一行代码完成JS与C/C++的无障碍跨语言互调, 所键即所得 。同时开发者无需关心NAPI的线程安全问题、Native对象GC问题,为
    发表于 08-07 17:04

    C++为什么没有被淘汰?

    C++一直都被称作是最难学的计算机语言,笔者从业多年,也认为确实如此。相比于其他几种语言,单纯从语法结构来说,C++都是比较困难的。何况很多同学并不是计算机专业出身,基础不是很扎实。
    发表于 08-04 09:46 143次阅读
    <b class='flag-5'>C++</b>为什么没有被淘汰?

    如何为Arm编译Cc++代码

    Studio或Keil MDK IDE环境。 Linux编译常见的编程语言在Arm上得到了很好的支持,大多数开源工具都可以在Linux发行版提供的包中使用。用于C++C和Fortran的商业编译器可从
    发表于 08-02 17:28

    一起探索C++的世界!

    C++
    YS YYDS
    发布于 :2023年07月07日 19:10:25

    是否有可用的ESP AT命令的C/C++库?

    我想知道是否有可用的 ESP AT 命令的 C/C++ 库?!就像一个简单的 AT 命令解析器,我可以将其集成到我的 MCU 固件,因为我计划将 ESP 模块用作我的主机 MCU 的从属 wifi
    发表于 05-15 06:47

    volatile的实现原理分析

    `volatile`是一个轻量级的`synchronized`,一般作用于 **变量** ,在多处理器开发的过程中保证了内存的可见性。相比于`synchronized`关键字,`volatile`关键字的执行成本更低,效率更高
    的头像 发表于 05-11 17:33 458次阅读
    <b class='flag-5'>volatile</b>的实现原理分析