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文章
4406浏览量
66858 -
C++
+关注
关注
22文章
2122浏览量
76718
发布评论请先 登录
C/C++条件编译
C++程序异常的处理机制
什么是volatile
C/C++代码静态测试工具Perforce QAC 2025.3的新特性
技能+1!如何在树莓派上使用C++控制GPIO?
在OpenVINO™ C++代码中启用 AddressSanitizer 时的内存泄漏怎么解决?
主流的 MCU 开发语言为什么是 C 而不是 C++?
创建了用于OpenVINO™推理的自定义C++和Python代码,从C++代码中获得的结果与Python代码不同是为什么?
为什么无法在运行时C++推理中读取OpenVINO™模型?
基于OpenHarmony标准系统的C++公共基础类库案例:ThreadPoll

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