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文章
4350浏览量
63052 -
C++
+关注
关注
22文章
2114浏览量
73932
发布评论请先 登录
相关推荐
AKI跨语言调用库神助攻C/C++代码迁移至HarmonyOS NEXT
使用OpenVINO GenAI API在C++中构建AI应用程序
![使用OpenVINO GenAI API在<b class='flag-5'>C++</b><b class='flag-5'>中</b>构建AI应用程序](https://file1.elecfans.com/web2/M00/09/51/wKgZomcJ0ziAd_APAAATE9KW7lE007.png)
ostream在c++中的用法
OpenVINO2024 C++推理使用技巧
ModusToolbox 3.2在c代码中包含c++代码的正确步骤是什么?
C/C++中两种宏实现方式
鸿蒙OS开发实例:【Native C++】
![鸿蒙OS开发实例:【Native <b class='flag-5'>C++</b>】](https://file1.elecfans.com/web2/M00/C8/31/wKgZomYZMTCAaDv3AAY5x13C324319.jpg)
使用 MISRA C++:2023® 避免基于范围的 for 循环中的错误
![使用 MISRA <b class='flag-5'>C++</b>:2023® 避免基于范围的 for 循环中的错误](https://file1.elecfans.com/web2/M00/A9/66/wKgZomUl7m-AHJX6AABuJjgxs14678.png)
评论