Ich habe eine einfache Funktion, in der ein Array mit der Größe in Abhängigkeit von dem Parameter deklariert wird, der int ist.C++ Array-Größe abhängig von Funktionsparameter verursacht Kompilierungsfehler
void f(int n){
char a[n];
};
int main() {
return 0;
}
Dieses Stück Code kompiliert auf GNU C++, in Ordnung, aber nicht auf MSVC 2005
ich folgende Kompilierungsfehler erhalten:
.\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
Was kann ich dies tun korrigieren?
(Ich bin daran interessiert, diese Arbeit mit MSVC zu machen, ohne dass neue Verwendung/Löschen)
Ja, aber die Zuweisung aus dem Heap, was "neu" tut, unterscheidet sich wesentlich von der Zuweisung aus dem Stack, was das OP versucht zu tun. (Es könnte Performance-sensitiven Code sein, den er zu kompilieren versucht.) –
Nicht so sehr Sorgen über die Leistung für den Moment dachte ich, es war natürlich zu arbeiten ... aber wenn es nicht Teil des C++ - Standards ist, verstehe ich – xxxxxxx
Re: _alloca: OP fragt nur nach äquivalenten Code, der auf MSVC funktioniert und ohne new/delete zu verwenden. –