Я работаю с довольно большой кодовой базой, которая отлично компилируется в Linux, но vC++ 2008 сплевывает ошибки.Как вы создаете конструкцию на месте структуры, скомпилированной в массив, в Visual C++ 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 '{'
не поддерживают Линукс сборки, только окна один. И я не могу его скомпилировать. Есть ли какой-то переключатель, какой-то макрос, чтобы компилировать его в vC++?
Возможно, существует такой же отличный способ построить эти массивы и передать их функциям на месте, которые компилируются просто в vC++?
Какая ошибка возникает при попытке скомпилировать его? –
Пожалуйста, разместите полный фрагмент кода, который компилируется на одной машине, а не другой. –
Это отличный пример того, как нестандартные расширения компилятора препятствуют переносимости. К сожалению, многие люди Linux считают мобильность приоритетом при переходе с Windows на Linux, но не в другом направлении. Лучшее решение - заставить их удалить нестандартное использование расширений из своей кодовой базы; Я желаю вам удачи в убеждении их сделать это. –