Tamanho da matriz C ++ dependente do parâmetro de função causa erros de compilação

Eu tenho uma função simples na qual uma matriz é declarada com tamanho, dependendo do parâmetro que é int.

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

    int main() {
        return 0;
    }

Este pedaço de código compila bem emGNU C ++, mas não no MSVC 2005.

Eu recebo os seguintes erros de compilação:

    .\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

O que posso fazer para corrigir isso?

(Estou interessado em fazer isso funcionar com o MSVC, sem usar new / delete)

questionAnswers(7)

yourAnswerToTheQuestion