##即意味着编译预处理
#define _DEBUG
是一种没具体定义值的预定义
仅仅是定义过
用在条件编译中如头文件中
#ifndef _DEBUG
#define _DEBUG
…
…
#endif
2.
int i;是变量的定义
extern int i; 是变量的声明
声明不产生代码
如函数原型 变量声明 结构声明
宏声明
枚举声明
类型声明
inline函数
3.只有声明可以被放在头文件中
否则会造成一个项目中多个编译单元里有重名的实体
某些编译器允许几个编译单元中存在同名的函数
或者用weak修饰符来强调这种存在
4+同一个编译单元里,同名的结构不能被重复声明
所以需要“标准头文件结构”