【发布时间】:2011-05-07 15:12:47
【问题描述】:
我正在查看http://geeksforgeeks.org/?p=10302的代码
#include<stdio.h>
int initializer(void)
{
return 50;
}
int main()
{
static int i = initializer();
printf(" value of i = %d", i);
getchar();
return 0;
}
此代码不会在 C 中编译,因为静态变量需要在 main() 启动之前初始化。没事儿。但是这段代码在 C++ 编译器中编译得很好。
我的问题是为什么当 static 在两种语言中具有相同用法时,它会在 C++ 编译器中编译。当然,这些语言的编译器会有所不同,但我无法指出确切的原因。如果标准中有规定,我很想知道。
我在 SO 上搜索了这个问题,发现了这些类似的问题:
【问题讨论】: