【问题标题】:static variable in vc [duplicate]vc中的静态变量[重复]
【发布时间】:2011-12-08 13:09:16
【问题描述】:

可能重复:
Understanding static variables declaration/initialization in C

我的项目中只有一个名为 test.c 的文件;如果我没有定义“TRUE”,下面的代码将无法编译。我用vc,报错是:'a' redefinition, different storage class。我只是想了解这种行为。请对这方面有所了解。

#ifdef TRUE 
static int a;  
static int a = 1;  
#else  
static int a = 1;  
static int a;  
#endif  

int main (void)  
{  
    printf("%d\n", a); 
    return 0;  
} 

当我省略“静态”时:

#ifdef TRUE 
int a;  
int a = 1;  
#else  
int a = 1;  
int a;  
#endif

两个都可以。

【问题讨论】:

  • @caisp:如果您需要澄清答案,您应该在评论中询问他们,而不是打开一个新的相同问题!

标签: c static visual-c++


【解决方案1】:

试试

#ifdef TRUE 
static int a = 1;  
#else  
static int a = 1;  
#endif  

【讨论】:

  • 在你的课本声明中查找
  • 我认为这里的问题是理解为什么使用static 定义后无法重新声明,而使用非静态变量则可以。
  • 在gcc中,两者都可以。 static int a;构成tentative definition
猜你喜欢
  • 2017-10-05
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 2017-01-10
  • 2013-03-01
相关资源
最近更新 更多