当我编译代码时,VC ++会返回错误,如上所述。受影响的行是(brushes){5.6, 214.0 , 13.0}
更具体地说,这是受影响的代码块
const brushes palette[] = {
(brushes){5.6, 214.0 , 13.0},
(brushes){200.0, 211.0, 12.0}
};
这段代码在Linux中编译得很好,为什么VC ++会发生这种情况?
编辑:画笔的定义:
typedef union {
struct {
double c;
double m;
double y;
} t;
double v[3];
} brushes;
答案 0 :(得分:1)
您使用的是C VC构造(§6.5.2.5复合文字),MS VC不支持,但GCC支持。
您应该可以通过删除(brushes)
表示法来获取要编译的代码:
const brushes palette[] = {
{ { 5.6, 214.0, 13.0 } },
{ { 200.0, 211.0, 12.0 } },
};
这将初始化union
brushes
的第一个成员。这适用于GCC;它也应该与MSVC合作,我相信。