Включение VLA (массивов переменной длины) в MS Visual C ++?

Как я могу включить использование VLA, массивов переменной длины, как определено в C99, в MS Visual C ++ или что это вообще невозможно ?

Да, я знаю, что стандарт C ++ основан на C89 и что VLA недоступны в стандарте C89 и, следовательно, не t доступен в C ++, но MSVC ++ должен быть также компилятором C, поведение, которое можно включить с помощью параметра компилятора / TC ( Compile as C Code (/ TC) ). Но это, похоже, не включает VLA, и процесс компиляции завершается неудачно с теми же ошибками при сборке как C ++ ( Компилировать как код C ++ (/ TP) ). Может быть, компилятор MSVC ++ C совместим только с C89 или мне что-то не хватает (какая-то специальная конструкция или прагма / определение)?

Пример кода:

#include <stdlib.h>

int main(int argc, char **argv)
{
  char pc[argc+5];

  /* do something useful with pc */

  return EXIT_SUCCESS;
}

Ошибки компиляции:

ошибка C2057: ожидаемое постоянное выражение

ошибка C2466: не удается выделить массив постоянного размера 0

ошибка C2133: «pc»: неизвестный размер

22
задан Shinnok 1 November 2019 в 06:47
поделиться