Visual C++ und der C99 Standard
-
Hi!
Ich schreibe gerade ein Programm, bei dem ich einen Array benutze, dessen Größe ich durch eine Variable festlege (ist erst ab C99 möglich), also wie folgt:
unsigned int max;
unsigned int zahlen[max]Mit dem GCC lässt sich das einwandfrei übersetzen und linken. Mit Visual C++ funktioniert das Linken nicht, weil der Microsoft-Compiler anscheinend nicht C99 konform ist. Ich frage mich jetzt, wie ich es anstelle, dass ich die Array-Größe mit ner Variable festlegen kann. Gibt es eine Möglichkeit dies zu umgehen oder kann man den Microsoft-Compiler dazu bewegen, das Programm zu kompilieren und auszuführen?
MFG
Profabe
-
mit malloc/new?
-
Kannst du ir das bitte erläutern was du mit malloc/new meinst?
Weil soweit ich weiß kann ich mit malloc Speicher für den Array reservieren. Der Speicherplatz des Arrays, soll sich aber zur Laufzet ändern können.
Der Array ist in einer Funktion definiert. Dieser Funktion wird unter anderem die Größe des Arrays übergeben. Diese Funktion wird mit unterschiedlichen Größenangaben in der Laufzeit mehrmals aufgerufen. Also bspw:void funktion(unsigned int max)
{
unsigned int array[max];
}wie müsste ich dieses Beispiel mit malloc bearbeiten, dass das funktioniert?
MFG
-
Nein, mit new. malloc benutzt man in C++ nicht für sowas.
int* blub = new int[size];
Steht in jedem Einsteigerbuch/Tutorial.
-
in C++ würde man allerdings std::vector verwenden.
-
int* blub = new int[size];
Das ist C++, ich muss dies aber in C realisieren. Gibt es da auch ne Möglichkeit?
-
Ok danke nochmal an Alle für die zahlreichen und schnelle Tipps. Ich hab mich jetzt in malloc eingelesen und hab ne Lösung gefunden.
-
Ok danke nochmal an Alle für die zahlreichen und schnellen Antworten. Ich hab mich jetzt in malloc eingelesen und hab ne Lösung gefunden.