大佬教程收集整理的这篇文章主要介绍了翻译单元中的`static`定义和`extern声明`的顺序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
extern int i; int main() { printf(" %d ",i); } static int i =3;
此外,这不起作用:
extern int i; static int i =3; int main() { printf(" %d ",i); }
但是如果静态变量在extern声明之前定义它的工作原理:
static int i =3; extern int i; int main() { printf(" %d ",i); }
正如我从extern int itells所理解的那样,我出现在其他地方,在这里它看起来如何(int i)
但是,其他地方意味着:
1)也许,稍后指向与全局变量相同的翻译单元.
2)也许,在其他一些转化单位.
我认为即使static int i = 3将i的范围限制在定义它的当前翻译单元,(1)也是有效的.
是不是静态int i = 3 global(我的意思是至少它在翻译单元中是可见的),尽管它的翻译单元的范围有限吗?那么为什么编译器无法找到呢?
当我编译前两个版本时,我得到以下编译时错误:
error: static declaration of ‘i’ follows non-static declaration note: prevIoUs declaration of ‘i’ was here
以上是大佬教程为你收集整理的翻译单元中的`static`定义和`extern声明`的顺序全部内容,希望文章能够帮你解决翻译单元中的`static`定义和`extern声明`的顺序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。