Выражение должно иметь константное значение(в вижуалке)

Язык СИ. Вылезает ошибка в Вижуалке(в онлайн компиляторе все нормально) Выражение должно иметь константное значение в 16 строке.

Сам код:

        #include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    int onoff = 0;
    setlocale(LC_ALL, "Russian");
    typedef struct {
        int num;
        char mess[60];
    } cinfo;
    unsigned num = 0;
    printf("Введите число cообщений: "); scanf("%u", &num);
    cinfo numbs[num];
    printf("0 - сортировка от макс. к мин., 1 - сортировка от макс. к мин., 2 - в порядке ввода: "); scanf("%u", &onoff);
    for (unsigned i = 0; i < num; i++) {
        printf("Введите информацию о сообщений: \n");
        printf("Номер девайса: "); scanf("%u", &numbs[i].num);
        printf("Текст(до 60 символов): "); scanf("%s", &numbs[i].mess);
    }
    if (onoff == 1) {
        for (unsigned i = 0; i < num-1; i++) {
            if (numbs[i+1].num > numbs[i].num) {
                int tmp = numbs[i].num;
                numbs[i].num = numbs[i+1].num;                   
                numbs[i+1].num = tmp;
            //  char * p =  numbs[i-1].mess;
        //  *   numbs[i - 1].mess =  * numbs[i].mess;
        //  *   numbs[i].mess = * p;
            }
        }
            for (unsigned j = 0; j < num; j++) {
                printf("Rez: Device: %u ; Text: %s\n", numbs[j].num, numbs[j].mess);
            }
    }
    if (onoff == 2) {
        for (unsigned i = 0; i < num; i++) {
            printf("Rez: Device: %u ; Text: %s\n", numbs[i].num, numbs[i].mess);
            puts("---------------------------------------------");
        }
    }
    return 0;
}

Ответы (0 шт):