以下是引用avator123在2010-12-3 16:09:35的发言:
#define ICU_BASE 0x00001010
#define ICGU *((volatile uint *) (ICU_BASE + 0x0480)) //谁能给解释一下这句。
这个 #define 完成程序代码中字符串代换的定义
这里,定义 ICGU 代替 *((volatile uint *) (ICU_BASE + 0x0480))
另外 #define 是预编译命令,也就是在编译之前完成的代换,可能定义的时候看到的含义和实际执行的是不同的
举个例子
程序代码:
#define A x+y
main()
{
int x,y;
int z;
x = 1; y = 2;
z = x * A * y;
printf("z = %d",z);
}
在上面这个例子中,楼主觉得输出的z应该是多少呢?你觉得z = 1 * (1 + 2) * 2 = 6 吗?
可是实际执行的时候,z = 1 * 1 + 2 * 2 =5 , 你可以试验一下
以上这个例子说明,定义的宏,在执行的时候,并不是被按照一个整体处理的,所以,
#define X Y 的含义是 在编译之前,将程序中的 X 代换成 Y ,具体的含义,需要结合引用语句进行解释