错误:C ++中不允许使用类型名称

时间:2011-08-14 02:55:33

标签: visual-c++

当我编译代码时,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;

1 个答案:

答案 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合作,我相信。