クラス内宣言時初期化のバグ

Visual Studio 2013 で以下のようなコードを実行すると、おかしな値が表示されます。

#include <stdio.h>

struct Hoge {
    struct {
        double value = 123;
    } data;
};

int main(int argc, char **argv)
{
    Hoge hoge;
    printf("%f\n", hoge.data.value);
    return 0;
}

構造体の中に無名構造体があって、その中で宣言時初期化を記述しています。

内側の構造体が、無名ではなく、名前を付けると、期待通りに動作します。

Visual Studio 2015 では修正されているようです。

 

カテゴリー: 未分類   パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA(画像認証)

上の画像の最初と最後を除いた3桁の数字を入力して、送信ボタンを押してください。