Как инициализировать массивы и векторы в старых компиляторах clang и gcc расширения в macOS? - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть код на C ++. Работает в Windows, Ubuntu и Fedora. Теперь я хочу скомпилировать его для macOS. Я столкнулся с некоторыми ошибками, такими как

error: expected expression
error: variable-sized object may not be initialized

У меня много строк, например

int A[n][2] = {{2, 5},{2, 6},{3, 4},{3, 7},{4, 3},{5, 2},{6, 2},{7, 3}};
int B[n][2] = {{8, 15},{8, 16},{9, 14},{9, 17},{10, 13},{10, 14},{10, 17},{11, 12},{11, 15},{11, 16},{12, 11},{13, 10},{14, 9},{14, 10},{15, 8},{15, 11},{16, 8},{16, 11},{17, 9},{17, 10}};

Я искал это из-за старого установленного расширения clang и gcc в macOS (я использую Mojave 10.14. 0)

Я не знаю, что я могу сделать, чтобы решить эту проблему.

1 Ответ

1 голос
/ 02 ноября 2019

Вместо этого вы можете определить их следующим образом:

int A[][2] = {{2, 5},{2, 6},{3, 4},{3, 7},{4, 3},{5, 2},{6, 2},{7, 3}};
int B[][2] = {{8, 15},{8, 16},{9, 14},{9, 17},{10, 13},{10, 14},{10, 17},{11, 12},{11, 15},{11, 16},{12, 11},{13, 10},{14, 9},{14, 10},{15, 8},{15, 11},{16, 8},{16, 11},{17, 9},{17, 10}};

Где clang тогда будет счастлив.

Если вы укажете n, вам нужно убедиться, что список инициализатора может соответствоватьв определенной структуре.

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