我读了这段宏(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的无符号字符数组.