Все мы знаем основные правила для статических массивов:
int size = 20;
char myArray[size];
недопустимо. И.
const int size = 20;
char myArray[size];
в порядке.
Но что насчет этого.
int f(const int size)
{
char myArr[size];
}
void main()
{
f(2);
f(1024);
}
MSVC говорит, что это ошибка, похоже, gcc компилирует и выполняет ее нормально.
Очевидно, это не переносимо, но должно быть принято?
Какой компилятор делает правильные действия в этой ситуации?
Кроме того, если это разрешено компилятором, должно ли это быть разрешено хорошими стандартами / практикой программирования?
EDITED: Идея состоит в том, что я хотел бы выделить стек для скорости, но я не знал бы во время компиляции размер массива. Я знаю, что есть и другие решения, и что выделение стека, вероятно, не будет значительной оптимизацией, но я думаю, что это интересное использование.