宏在编译预处理时,会展开。
const变量在编译时,也会替换成定义时的常量,以便检查是否修改了const变量。但是const变量所分配的内存任然存在,
这是以下语句能够正常编译的原因。
int main()
{
const int i = 8;
int *p = (int *)&i;
*p = 9;
printf("i = %d, *p = %d\n", i, *p);
return 0;
}
output:
i = 8, *p = 9
宏在编译预处理时,会展开。
const变量在编译时,也会替换成定义时的常量,以便检查是否修改了const变量。但是const变量所分配的内存任然存在,
这是以下语句能够正常编译的原因。
int main()
{
const int i = 8;
int *p = (int *)&i;
*p = 9;
printf("i = %d, *p = %d\n", i, *p);
return 0;
}
output:
i = 8, *p = 9