宏 静态字符串 区别

编译时机区别: 宏在编译之前进行编译,静态变量是在运行时编译;
函数定义能力:宏可以,静态变量不可以
编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。

各自的缺点

宏:1. 大量的使用宏会造成编译时间变长 2. 不会编译报错,会隐藏掉一些致命的愈发错误

静态变量: 1. 不能定义函数 2. 限制类型(const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p)) 2. 只能读 

//============补充知识================

static 和 extern

修饰局部变量:
1.延长局部变量的生命周期,程序结束才会销毁。
2.局部变量只会生成一份内存,只会初始化一次。
3.改变局部变量的作用域。
修饰全局变量
1.只能在本文件中访问,修改全局变量的作用域,生命周期不会改
2.避免重复定义全局变量
extern作用:
只是用来获取全局变量(包括全局静态变量)的值,不能用于定义变量
extern工作原理:
先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找。

static与const联合使用

全局变量,并且不允许改变的常量