我想使用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更好地支持标准。
谢谢