Ideone和Codepad真的不支持C 03吗?

前端之家收集整理的这篇文章主要介绍了Ideone和Codepad真的不支持C 03吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题与 Prasoonquestion有关非POD类型和值初始化有关.

我在Ideone和Codepad等在线编译器上尝试了以下代码,但可执行文件在这两个站点上都给出了运行时错误.

#include <iostream>
#include <cassert>

struct Struct {
    std::string String;
    int Int;
    bool k;
};

struct InStruct:Struct
{
   InStruct():Struct(){}
};

int main()
{
   InStruct i;
   assert ( i.Int == 0);
   std::cout << "Hello";
}

Ideone输出here
键盘输出here

这是否意味着它们都不支持C 03值初始化功能

解决方法

Does that mean neither of them support C++03 value initialization feature?

是.

在4.4版之前,GCC并不完全支持值初始化(the Boost GCC compatibility header解释了这一点,并且链接到相关的GCC缺陷报告;参见第77行).

如果您的代码需要可移植,那么您应该非常小心地依赖于值初始化;直到最近,GCC才完全支持它,即使在最新版本的Visual C 2010中,Visual C也不完全支持它.

猜你在找的C&C++相关文章