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);

不过根据MSDNInfoq关于 Visual Studio 的路线图,Visual Studio 2013 RTM 中将会有一些对 C99 的支持,这个特性就是其中之一。

于 2013-08-25T14:18:03.903 回答