14 c
AFAIK,文件范围内的变量或函数的任何声明都默认具有外部链接.static意思是"它有内部联系",extern- "它可能在其他地方定义",而不是"它有外部联系".
如果是,为什么我们需要extern关键字?换句话说,int foo;和extern int foo;(文件范围)之间的区别是什么?
das*_*ght 29
该extern关键字主要用于变量声明.当您转发声明一个函数时,该关键字是可选的.
该关键字使编译器可以区分全局变量的前向声明和变量的定义:
extern double xyz; // Declares xyz without defining it
Run Code Online (Sandbox Code Playgroud)
如果您自己保留此声明然后xyz在代码中使用,则会在链接阶段触发"未定义的符号"错误.
double xyz; // Declares and defines xyz
Run Code Online (Sandbox Code Playgroud)
如果将此声明保留在头文件中并从多个C/C++文件中使用它,则会在链接阶段触发"多个定义"错误.
解决方案是extern在标头中使用,而不是在一个C或C++文件中使用extern.
| 归档时间: |
|
| 查看次数: |
12492 次 |
| 最近记录: |