Ho una semplice funzione in cui una matrice viene dichiarata con la dimensione a seconda del parametro che è int.La dimensione dell'array C++ dipende dal parametro funzione causa errori di compilazione
void f(int n){
char a[n];
};
int main() {
return 0;
}
Questo pezzo di codice viene compilato bene su GNU C++, ma non su MSVC 2005.
Ottengo i seguenti errori di compilazione:
.\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
Cosa posso fare per correggere questo?
(io sono interessato a fare questo lavoro con MSVC, senza l'utilizzo di new/delete)
Sì, ma l'allocazione dall'heap, che fa "new", è molto diversa dall'allocazione dallo stack che è ciò che l'OP sta tentando di fare. (Potrebbe essere un codice sensibile alle prestazioni che sta cercando di compilare.) –
Non mi preoccupo molto delle prestazioni per il momento, ho pensato che fosse naturale lavorare ... ma se non fa parte dello standard C++ capisco – xxxxxxx
Re: _alloca: OP chiedeva solo di ottenere codice equivalente funzionante su MSVC e senza usare new/delete. –