Отредактировано снова, потому что изначально было непонятно, что я пытаюсь инициализировать массивы во время компиляции, а не во время выполнения...
У меня есть следующий уменьшенный тестовый файл:
typedef struct TestStruct
{
int length;
int values[];
};
TestStruct t = {3, {0, 1, 2}};
TestStruct t2 = {4, {0, 1, 2, 3}};
int main()
{
return(0);
}
Это работает с Visual С++, но не компилируется с g++ под linux. Может ли кто-нибудь помочь мне сделать этот вид инициализатора портативным?
Дополнительные сведения: фактическая структура, с которой я работаю, имеет несколько других значений int, и массив может иметь длину от одной записи до более 1800 записей.
EDIT: Я думаю (но не уверен), что это не проблема VLA. Чтобы уточнить, я пытаюсь заставить компилятор выполнить эту работу для меня во время компиляции. Длина массива во время выполнения является постоянной. Извиняюсь, если я ошибаюсь; Я в первую очередь программист С#/Perl/Ruby, который задерживает это устаревшее приложение...
Любая помощь очень ценится. Спасибо!