一、柔性陣列(長度是0的陣列)
技巧:定義在結構體最後面,佔位,用於訪問轉換之後對應位置的資料,通用用於流式資料結構化過程。例如:訊息結構是16位長度,後跟資料,但資料是不定長的,**如下:
typedef struct
msg_head_t;
int main()
; msg_head_t* msg = (msg_head_t*)data;
cout << msg->len << endl;
cout << msg->data[0] << endl;
cout << msg->data[1] << endl;
cout << msg->data << endl;
return 0;
}輸出:
160a
babc
二、長度補整,通長用於計算最小需要對齊的緩衝區, 或加密補全,或記憶體對映計算位址範圍等
技巧:指令取模效能有發,位操作非常高效,先加a-1,這樣剛好時不增長,其他情況向上加1。a-1低位都是1,取反為0,高位為1,再與操作,則相當於去除餘數。
#define align(d, a) (((d) + (a - 1)) & ~(a - 1))
三、通過0位址,計算成員位址偏移量
#include using namespace std;
struct a
;int main()
UE 實用技巧分享
無意中登入了ultraedit 官網,發現有幾張狂拽酷炫的 發現原來 ue 功能如此強大,簡單學會這幾個小技巧,課大大提公升工作效率,話不多說,上圖 column mode 列模式 以下是 ue 的一些使用技巧 列模式 alt c 使用列模式在文件中的任何位置沿y軸進行直觀編輯。使用效果可看 切換自...
Mac系統實用技巧分享!
三指拖移選項是在 force touch 觸控板推出之前的預設功能,自從觸控板有了壓力感應功能,這個選項就被蘋果藏起來了。拖動視窗或者檔案只能通過重壓來實現,不熟練的在拖動過程拖動過程很容易斷開,又是拖動檔案時經常拖動到非目的資料夾,非常麻煩。但是蘋果還是良心的保留了這一選項,啟用三指拖移步驟如下 ...
IntelliJ IDEA 超實用技巧分享
提示不區分大小寫 settings editor general code completion 低版本 將 case sensitive completion 設定為 none 就可以了 自動導包功能及相關優化功能 settings editor general auto import ctrl ...