Я работаю с довольно большой кодовой базой, которая прекрасно компилируется в Linux, но vc ++ 2008 выдает ошибки.
Код проблемы выглядит следующим образом:
Декларация:
typedef float vec_t;
typedef vec_t vec2_t[2];
База кода усеяна конструкцией на месте, как эта:
(vec2_t){0, divs}
Или более сложный:
(vec2_t){ 1/(float)Vid_GetScreenW(), 1/(float)Vid_GetScreenH()}
Насколько я знаю, этот код создает структуру, затем преобразует ее в массив и передает адрес функции. Лично я никогда не использовал подобную конструкцию на месте, поэтому понятия не имею, как заставить это работать.
Компилятор генерирует несколько синтаксических ошибок, подобных этим:
Error 2 error C2143: syntax error : missing ')' before '{'
Error 3 error C2059: syntax error : ')'
Error 4 error C2143: syntax error : missing ';' before '{'
Я не поддерживаю сборку Linux, только Windows. И я не могу заставить его скомпилировать. Есть ли какой-нибудь переключатель, какой-то макрос, чтобы vc ++ компилировал его?
Может быть, есть такой же изящный способ для создания этих массивов и передачи их в функции на месте, которые прекрасно компилируются в vc ++?