开发者

Error: type name is not allowed in C++

When I compiled my code, VC++ returns an error, as stated above. The affected line is (brushes){5.6, 214.0 , 13.0}

More specifically, here is the affected code block

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

This code compiles fine in Linux, so why is this happening for VC++?

EDIT: Definiti开发者_StackOverflow社区on of brushes:

typedef union {
    struct {
        double c;
        double m;
        double y;
    } t;
double v[3];
} brushes;


You are using a C99 construct (§6.5.2.5 Compound Literals) which is not supported by MS VC, but which is supported by GCC.

You should be able to get the code to compile on both by dropping the (brushes) notation:

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

This will initialize the first member of the union that is brushes. This works with GCC; it should work with MSVC too, I believe.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜