编译此代码示例时
#include#include 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
C模式.
显然静态初始化存在差异.是否有理由为C++显然允许这样做而不是C?这是因为否则你将无法拥有带构造函数的全局对象?