这个宏定义了什么?

gol*_*ean 9 c macros

我读了这段宏(C代码)并且在解码它时很困惑,知道它定义了什么.它定义了什么?

#define sram (*((unsigned char (*)[1]) 0))
Run Code Online (Sandbox Code Playgroud)

-广告

ken*_*ytm 12

我认为sram意味着"RAM的开始".


unsigned char[1]
Run Code Online (Sandbox Code Playgroud)

一个大小为1的无符号字符数组.

unsigned char(*)[1]
Run Code Online (Sandbox Code Playgroud)

指向数组的指针无符号字符的大小为1.

(unsigned char (*)[1]) 0
Run Code Online (Sandbox Code Playgroud)

将0转换为指向未签名字符大小为1的数组的指针.

*((unsigned char (*)[1]) 0)
Run Code Online (Sandbox Code Playgroud)

读取位置0处的一些内存,并将结果解释为大小为1的无符号字符数组.

(*((unsigned char (*)[1]) 0))
Run Code Online (Sandbox Code Playgroud)

只是为了避免1 + 5*8 + 1 == 42.

#define sram (*((unsigned char (*)[1]) 0))
Run Code Online (Sandbox Code Playgroud)

将变量定义sram到从位置0开始的内存,并将结果解释为大小为1的无符号字符数组.