この文法は方言?

[戻る]
しん 2006/06/15(木) 11:21:30
下のC++コードは、方言(非標準仕様)でしょうか?
あるソースを見て、??と思い、VC++で実験したらNGだった為です。

struct A
{
    int a;
};
void f()
{
A   testA = {
  a: 0;        // これ。普通は「 0 // メンバa 」と書くのだけど...
};
}

どうぞ宜しくお願いします。

Ban 2006/06/15(木) 11:35:40
GCCの独自拡張機能(非標準機能)です。

通りすがり 2006/06/15(木) 11:49:45
本題とは関係ありませんが…
質問の際にはVCのバージョンも書きましょう。

しん 2006/06/15(木) 13:10:32
[[解決]]
>GCCの独自拡張機能(非標準機能)
なるほど! 有難うございました!

>VCのバージョンも書きましょう
悔い改めます。

reshia 2006/06/16(金) 08:43:40
C99では、以下のような書き方も許されています。
(VCじゃ対応してませんけど)

struct ABC {
    int    a;
    char   b;
    double c;
}

ABC abc1 = {
    [0] = 0;
    [1] = '\0';
    [2] = 0.0;
}

ABC abc2 = {
    .a = 0;
    .b = '\0';
    .c = 0.0;
}

yoh2 [E-Mail] 2006/06/16(金) 21:34:34
> ABC abc1 = {
>     [0] = 0;
>     [1] = '\0';
>     [2] = 0.0;
> }

こいつはダメですね。配列に対して

int array[] = {
    [1] = 1,
    [2] = 2,
    [0] = 3,
};

とかならOKですけど。

あと、もうひとつの例も、各要素の終わりは';'ではなく','です。

reshia 2006/06/16(金) 22:12:00
#勘違い、すみません。。
#使わない(使えない)もので・・。

古いスレッドには追加発言できません。