大佬教程收集整理的这篇文章主要介绍了在C中的给定相同范围内声明相同的变量名称,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这里,在给定的相同范围内,声明相同的变量名称.
情况1:
#include <iostream> static int i; extern int i; int main() { std::cout<<i<<std::endl; return 0; }@H_618_12@输出:
0@H_618_12@案例2:
#include <iostream> extern int i; static int i; int main() { std::cout<<i<<std::endl; return 0; }@H_618_12@得到错误:
prog.cpp:4:12: error: 'i' was declared 'extern' and later 'static' [-fpermissive] static int i; ^ prog.cpp:3:12: note: prevIoUs declaration of 'i' extern int i;@H_618_12@为什么第一种情况正常,而第二种情况却出错?
另一方面,static无条件地声明其实体具有内部链接.
这意味着此代码只是通过内部链接声明和定义i.第二个声明找到第一个并重新使用它的链接.
static int i; extern int i;@H_618_12@而此代码声明变量具有外部链接,然后声明并定义它以具有内部链接,这是一个错误.
extern int i; static int i;@H_618_12@这种行为的原因很难跟踪,但最有可能回到C标准前的日子.
在C中,此行为由[basic.link]指定,在最新的N4687草案中为6.5 / 6:
以上是大佬教程为你收集整理的在C中的给定相同范围内声明相同的变量名称全部内容,希望文章能够帮你解决在C中的给定相同范围内声明相同的变量名称所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。