extern与#define两者的使用从本质上讲没有本质的区别,无非就是为编译器的编译格式所服务的;

他们在编译的过程不是同一个阶段,#define是在编译器的预编译时期,而extern是在编译器的编译时期

#define没有类型检查的功能 extern有类型检查的功能


#define 可以定义许多高级的宏

extern可以跨obj进行变量的声明