参考https://blog.csdn.net/a8039974/article/details/90697461
https://www.cnblogs.com/lenmom/p/9199759.html
定义与声明
如果变量定义在函数内部,则分配在堆栈上; 如果是定义成全局变量,则分配在静态数据区。在一个程序中,变量只能定义一次,却可以声明多次。定义包含声明
对于变量来说, int i
既是声明也是定义, 会开辟内存空间赋随机值; extern int i
只是声明, 不开辟内存空间. 当且仅当在函数外部时, extern才可以赋初值, 这样就成了定义, 会开辟内存空间. 如int i = 0
和extern int i = 0
此时是等价的.
对于函数来说, 没有{}就是声明, 有{}就是定义.
不要把变量定义放入.h文件,这样容易导致重复定义错误。有三个例外,以下三种实体的定义也可放到头文件中。
1.值在编译时就已知的const 变量的定义可以放到头文件中
const int num = 10;
2.类的定义可以放到头文件中
3.inline 函数
尽量使用static关键字把变量定义限制于该源文件作用域,除非变量被设计成全局的。
对于头文件中声明的const变量, 若要在其他文件中使用, 声明和定义都要加extern.
//file1.cpp定义并初始化和一个常量,该常量能被其他文件访问
extern const int bufferSize = function();
//file1.h头文件
extern const int bufferSize; //与file1.cpp中定义的是同一个
网友评论