区别大了个去了.
宏定义是预处理命令.
#defien A 3
执行后, 预处理器把会正文所有全字匹配的A, 全部替换为3,
那么, 最后的代码进入
编译器的代码,
1 + A, 是变成1 + 3的.
而const int a = 3;
这个是不在预处理器的管理范围之内 ,这个就是编译器的工作了, 有些编译器不会为它分配空间, 直接把它加入符号表中, 也就是说,
常量不再是0123456789这10个数, 而是0123456789a这11个数, 那么a就是被定义成3了, 所以符号表里的内容是01234567893.
而有些 编译器会为它分配空间.
你不知道它们的区别, 说明你学宏的时候, 并不知道宏的原理.