El tamaño de la matriz de C ++ que depende del parámetro de la función provoca errores de compilación

Tengo una función simple en la que una matriz se declara con un tamaño que depende del parámetro que es int.

    void f(int n){
        char a[n];
    };

    int main() {
        return 0;
    }

Este fragmento de código se compila bien enGNU C ++, pero no en MSVC 2005.

Recibo los siguientes errores de compilación:

    .\main.cpp(4) : error C2057: expected constant expression
    .\main.cpp(4) : error C2466: cannot allocate an array of constant size 0
    .\main.cpp(4) : error C2133: 'a' : unknown size

¿Qué puedo hacer para corregir esto?

(Estoy interesado en hacer que esto funcione con MSVC, sin usar new / delete)

Respuestas a la pregunta(7)

Su respuesta a la pregunta