<分区>
编译此代码示例时
#include <stdio.h>
#include <stdlib.h>
int myfunc()
{
printf("Constructor\n");
return 1;
}
static const int dummy = myfunc();
int main()
{
printf("main\n");
return 0;
}
它在编译为 C++ 时有效,但在使用相同编译器 (MingW gcc) 时不能作为 C。我得到一个 initializer element is not constant
in C mode。
所以显然在静态初始化方面存在差异。为什么 C++ 显然允许这样做,但 C 却不允许这样做?这是因为否则您将无法拥有具有构造函数的全局对象吗?