巨集定義測試

2021-10-23 20:15:36 字數 681 閱讀 6035

#include

/* 得到filed在結構體中的偏移量 */

#define foffset(type, field) ((size_t) & ((type *)0)->field)

typedef struct 

test_reg;

test_reg test_reg;

int main(void)

{unsigned char test = 0;

test = foffset(test_reg, a);

printf("the value is %d\n", test);

/*(size_t) &((test_reg *)0)->a)

1.(test_reg *)0 將0強制轉換成結構體型別指標,其轉換結果為乙個null指標

2.(test_reg *)0)是乙個(test_reg*)的null指標,通過這個指標去訪問結構體成員變數是非法的

3.&((test_reg *)0)->a) 但是通過這個null指標去計算成員變數針對這個例項((test_reg*)0)首位址的偏移位址是合法的

4.size_t用於強制轉換成合法的資料,用於表明物件的大小,不同平台下,size_t範圍不同

abs int 巨集定義 巨集定義和巨集方法

巨集定義和巨集方法 定義機型 define is iphone5 uiscreen instancesrespondtoselector selector currentmode cgsizeequaltosize cgsizemake 640,1136 uiscreen mainscreen cu...

C 巨集定義 巨集定義求面積

學過c語言的讀者,對巨集定義應該不陌生,同樣在c 中,也可以用巨集定義命令將乙個指定的識別符號來代表乙個字串,巨集定義的作用一般是用乙個短的名字代表乙個長的字串。一般形式為 define 識別符號 字串定義pi的符號常量 define pi 3.14在c 中還可以用 define命令定義帶引數的巨集...

預定義,巨集定義

巨集定義 其作用就是 換其名曰 給程式中的一段特殊的 函式,資料取了個簡單明瞭的名字。不過有一點這傢伙的作用範圍是全域性的。即使它是在某乙個函式塊中定義的。這個其實也容易理解。因為巨集定義是預定義的一種,在我們的程式之前,由預編譯器 cpp 提前編譯出來了,那個時候程式裡的結構是個啥樣子編譯器壓根就...