宏常量、const常量以及全局变量的定义与差别

宏常量、const常量以及全局变量的定义与差别是什么。
定义格式什么?
三者有什么共同点又有什么差别?
谢谢!

1.定义格式
宏常量:#define 宏名 常量值 比如 #define MAXLEN 100
const常量:const 类型 变量名=值; 比如 const int a = 20;
全局变量: 类型名 变量名; 比如 int g_nmb; (也可以在声明的时候直接初始化,int g_nmb=10;),全局变量不能放在函数中。
2.共同点和不同点
宏常量和const常量都不能修改(全局变量可修改)
宏常量和全局变量的作用范围是其所在的整个文件,以及包含他们所在头文件的所有文件(const常量的作用域只在定义它的{}中。)

  1. 就定义常量说的话, const 定义的常数是变量 也带类型, #define ...
  2. 就起作用的阶段而言,#define 是在编译的预处理阶段起作用,而 const ...
  3. 就起作用的方式而言,#define 只是简单的字符串替换,没有类型检查。而 c...
  4. 就空间占用而言,define宏仅仅是展开,有几个地方使用则展开几次,不分配内存
    https://www.csdn.net/tags/OtDagg0sOTA2Ny1ibG9n.html