什么重新定义一个全局变量时不会重新定义静态全局变量给出一个编译时

什么重新定义一个全局变量时不会重新定义静态全局变量给出一个编译时

本文介绍了为什么重新定义一个全局变量时不会重新定义静态全局变量给出一个编译时错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编译code 1给出了一个错误我重新定义,但code 2显示没有类似的错误。为什么会这样呢?

code 1

 静态INT I; //声明变量i。
静态INT I = 25; //初始化变量。
静态INT I; //再次声明变量i。
诠释主(){
    返回0;
}

code 2

  INT I; //声明变量i。
INT I = 25; //初始化变量。
INT I; //再次声明变量i。
诠释主(){
    返回0;
}


解决方案

双方应编译。

两者 INT I; 静态INT I; 暂定定义的用C因为他们没有一个初始化,不是的extern 。你被允许多个暂定声明和至多一个非暂定定义为在翻译单元的任何物体,只要该定义不类型或联动冲突

ISO / IEC 9899:1999 6.9.2:

这篇关于为什么重新定义一个全局变量时不会重新定义静态全局变量给出一个编译时错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 09:43