嵌入式系统在头文件中,经常看到如下定义
#define GPBCON (*(volatile unsigned long *)0x56000010)
volatile 是表示易变的,每次读取都从地址里读取,不优化;(volatile unsigned long *)是指针强制类型转换(注意这里是转换为指针,不是指针变量,一个地址可以看做是指针,而存放指针的是指针变量),表示指针指向unsigned long 类型;然后第二层括号是该指针的值,对应指针指向的地址为0x56000010;最后的取值符号*表示指向该地址,相当于读写该地址的值,读写的值是unsigned long 类型。