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

Visual c++ 错误:C+;中不允许使用类型名称+;,visual-c++,Visual C++,当我编译代码时,VC++返回一个错误,如上所述。受影响的行是(笔刷){5.6214.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 { d

当我编译代码时,VC++返回一个错误,如上所述。受影响的行是
(笔刷){5.6214.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;

您使用的是MS VC不支持但GCC支持的C99构造(§6.5.2.5复合文本)

通过删除
(画笔)
符号,您应该能够在这两种语言上编译代码:

const  brushes palette[] = {
    { {   5.6, 214.0, 13.0 } },
    { { 200.0, 211.0, 12.0 } },
};

这将初始化
联合
的第一个成员,即
笔刷
。这适用于GCC;我相信它也应该适用于MSVC。

画笔的定义是什么??还有,具体的错误消息是什么?@shelleybutterfly-这是它得到的具体信息,也是VC++抛出的问题。@Alastair-补充说,不过,其他人也有这个问题,但他们没有说他是如何解决的。请看这里:@Skaty-hehe哇,好吧,这看起来像是对错误的描述,我道歉:)好吧,这很有效。但是,对于某些类型,它返回了一个错误“Expected a expression”。示例:返回(画笔){5.6,214.0,13.0}@Skaty:和以前一样-不能将C99构造与MSVC一起使用;它不支持C99。