使用VS 2012初始化具有初始化列表的非聚合的建议

时间:2015-09-12 00:01:49

标签: c visual-studio-2012 porting

我想使用VS 2012编译一个非常旧的应用程序。它是用C语言编写的,并且是在九十年代的某个时候编写的。我已经进行了一系列代码更改,但我遇到了一个问题 目前,我在VS 2012中获得了“无法使用初始化列表初始化非聚合列表”列表错误 经过一些研究,我看到了VS 2012发生了什么以及为什么会发生这种情况 但是,我想知道如何以支持在多个平台上编译的方式来改变它。请注意,我的意图是重写好的大块,但与此同时,我希望能够编译并检查它。

结构的定义是:

struct plantbl {
  char max_harmonic[9];
  char max_power_of_t;
  signed char *arg_tbl;
  double *lon_tbl;
  double *lat_tbl;
  double *rad_tbl;
  double distance;
};

结构在标题中定义(实际上是两个)

声明并初始化实例如下:

static struct plantbl mer404 = {
  { 11, 14, 10, 11,  4,  5,  2,  0,  0,},
  6,
  merargs,
  mertabl,
  mertabb,
  mertabr,
  3.8709830979999998e-01,
};

mer *变量是这样定义的数组:

static signed char merargs[] = { ... long++ list of values };

mer404变量在c文件的全局命名空间中声明,定义和初始化。此文件中没有任何功能。

编译失败:

error C2552: 'mer404' : non-aggregates cannot be initialized with initializer list

经过一些研究,阅读和思考我所读到的内容后,我明白了发生了什么以及为什么会这样 我正在寻找建议,这些建议将允许我在使用变量的情况下以最小的修改编译应用程序,并为我提供一个处理此问题的策略,直到VS更好地支持标准。

谢谢

0 个答案:

没有答案