1. 宏会在预处理阶段被替换,而全局变量是在运行时;
  2. 宏定义不分配内存,全局变量定义需要分配内存;
  3. 宏不区分数据类型,它本质上是一段字符,在预处理的时候被替换到引用的位置,而全局变量区分数据类型;
  4. 宏定义之后值是不能改变的,全局变量的值是可以改变的;
  5. 宏定义只有在定义所在文件,或引用所在文件的其它文件中使用。 而全局变量可以在工程所有文件中使用,只需在使用前加一个声明。

参考文献