🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[参考原文](http://stackoverflow.com/questions/1410563/what-is-the-difference-between-a-definition-and-a-declaration%20%E5%8F%82%E8%80%83%E5%8E%9F%E6%96%87) 变量声明:编译器被通知变量存在,不用为**变量申请内存单元**。 变量声明包含变量标识符,变量类型,extern修饰 这些信息。不管是新建类型,对象,函数声明,声明是编译器所需要的,声明告诉编译器需要接受对这个标识符的引用。声明有如下形式。 ~~~ externint bar; externint g(int,int); // extern can be omitted for function declarations,函数申明可以省略 double f(int,double); // no extern allowed for type declarations,对于类型声明省略extern也是行的 extern class foo; ~~~ 变量定义:编译器为**变量申请内存**,就是变量定义。 包含变量类型,变量标识符这些信息;定义的本质是实例化或者说实现这个标识符,表现就是在内存中申请一个跟类型等量空间大小的内存空间。变量定义是连接器所需要的,连接器通过变量定义来引用到他们的实体内存空间。下面这些是上面声明的定义: ~~~ int bar; int g(int lhs,int rhs){return lhs*rhs;} double f(int i,double d){return i+d;} class foo {}; ~~~