Я прочитал, что размер массива должен быть известен во время компиляции. Тем не менее, когда я делаю это, он компилируется и работает нормально, без каких-либо ошибок … почему?
#include <iostream>
int main() {
int size;
std::cout << "Enter size: ";
std::cin >> size;
int a[size];
return 0;
}
Вы не компилируете его как строго соответствующий C ++, но используя расширение, заимствованное из C99.
использование -Wall -Wextra -pedantic -std=c++14
заставить компилятор жаловаться.
И помните, что соответствующему компилятору нужно только вывести единственную диагностику при обнаружении конструкции, которую стандарт считает некорректной.
Массивы переменной длины являются реальностью в C ++ и, по-видимому, также в C.