Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Запрет создания (стекового) массива неизвестной длины

#cpp #массивы #gcc #mingw #codeblocks


Необходимо создать массив, размер которого заранее неизвестен (например, его размер
будет введён с клавиатуры). Наивное решение (неправильное):

int n;
std::cin >> n;
int mas[n];


Этот способ на некоторых компиляторах работает (например, на gcc). Какой флаг компиляции
нужно выставить, чтобы на это действие получить warning ? А лучше ошибку компиляции
(чтобы -Werror не ставить просто так).

Это необходимо в учебных целях, чтобы не объяснять детям тонкости стандарта и нестандартных
расширений компиляторов. Хочется им просто сказать, что так делать нельзя, что компилятор
это не скомпилирует (и защититься от фейла с gcc :) ).

Конкретнее, это будет использоваться в среде CodeBlocks, там компилятор MinGW.
    


Ответы

Ответ 1



Используйте -pedantic или -Wvla: warning: ISO C++ forbids variable length array 'mas' [-Wvla]

Комментариев нет:

Отправить комментарий