C ++ позволяет мне выделять массив во время выполнения, а не выдавать ошибку

Я прочитал, что размер массива должен быть известен во время компиляции. Тем не менее, когда я делаю это, он компилируется и работает нормально, без каких-либо ошибок … почему?

#include <iostream>

int main() {
int size;
std::cout << "Enter size: ";
std::cin >> size;
int a[size];

return 0;
}

4

Решение

Вы не компилируете его как строго соответствующий C ++, но используя расширение, заимствованное из C99.

использование -Wall -Wextra -pedantic -std=c++14 заставить компилятор жаловаться.
И помните, что соответствующему компилятору нужно только вывести единственную диагностику при обнаружении конструкции, которую стандарт считает некорректной.

6

Другие решения

Массивы переменной длины являются реальностью в C ++ и, по-видимому, также в C.

https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html

0

По вопросам рекламы [email protected]