0

const インスタンスの初期化に構造体メンバーの名前を使用する方法はありますか

typedef struct {
    int i1;
    int i2;
    int i3;
} info_t;

//- GCC
const info_t info = {
  .i1 = 1,
  .i2 = 2
}

//- VS
const info_t info = {1,2,0);

GCC ではこの便利な方法を使用できますが、Visual Studio ではエラー C2143 "構文エラー: 前に } がありません。" が発生します... GCC ではメンバーを省略することもできます (例: info.t3が設定されていません) 。

VS の回避策を使用して、互換性があり読みやすいコードを生成する簡単な方法を知っている人はいますか?

4

1 に答える 1

1

C99で導入された指定イニシャライザと呼ばれます。

しかし、Visual Studio は現在 C99 をサポートしていません。したがって、Visual Studio ではできません。C89 の方法に固執する必要があります。

const info_t info = {1,2,0);

ただし、 Visual Studio のロードマップに関するMSDNおよびInfoqによると、Visual Studio 2013 RTM では C99 がある程度サポートされる予定であり、この機能はその 1 つです。

于 2013-08-25T14:18:03.903 に答える