volatile
volatile int i = 10;
volatile 關鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素(操作系統(tǒng)、硬件、其它線程等)更改。所以使用 volatile 告訴編譯器不應對這樣的對象進行優(yōu)化。
volatile 關鍵字聲明的變量,每次訪問時都必須從內存中取出值(沒有被 volatile 修飾的變量,可能由于編譯器的優(yōu)化,從 CPU 寄存器中取值)
const 可以是 volatile (如只讀的狀態(tài)寄存器)
指針可以是 volatile
assert()
斷言,是宏,而非函數(shù)。assert 宏的原型定義在 《assert.h》(C)、《cassert》(C++)中,其作用是如果它的條件返回錯誤,則終止程序執(zhí)行??梢酝ㄟ^定義 NDEBUG 來關閉 assert,但是需要在源代碼的開頭,include 《assert.h》 之前。
assert() 使用
#define NDEBUG // 加上這行,則 assert 不可用#include 《assert.h》
assert( p != NULL ); // assert 不可用
sizeof()
sizeof 對數(shù)組,得到整個數(shù)組所占空間大小。
sizeof 對指針,得到指針本身所占空間大小。
#pragma pack(n)
設定結構體、聯(lián)合以及類成員變量以 n 字節(jié)方式對齊
#pragma pack(n) 使用
#pragma pack(push) // 保存對齊狀態(tài)#pragma pack(4) // 設定為 4 字節(jié)對齊
struct test{ char m1; double m4; int m3;};
#pragma pack(pop) // 恢復對齊狀態(tài)
責任編輯:haq
-
函數(shù)
+關注
關注
3文章
4381瀏覽量
64936 -
C++
+關注
關注
22文章
2119瀏覽量
75354
發(fā)布評論請先 登錄
主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?

創(chuàng)建了用于OpenVINO?推理的自定義C++和Python代碼,從C++代碼中獲得的結果與Python代碼不同是為什么?
基于OpenHarmony標準系統(tǒng)的C++公共基礎類庫案例:ThreadPoll

Spire.XLS for C++組件說明

EE-112:模擬C++中的類實現(xiàn)

AKI跨語言調用庫神助攻C/C++代碼遷移至HarmonyOS NEXT
同樣是函數(shù),在C和C++中有什么區(qū)別
C7000 C/C++優(yōu)化指南用戶手冊

TMS320C6000優(yōu)化C/C++編譯器v8.3.x

使用OpenVINO GenAI API在C++中構建AI應用程序

評論