Ошибка: имя типа не допускается в C ++ - PullRequest
1 голос
/ 14 августа 2011

Когда я компилировал свой код, 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 Ответ

1 голос
/ 14 августа 2011

Вы используете конструкцию C99 (§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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...