C++ Wie kann das sein ?!

S

Saiga

Gast
Hi wie kann das sein das dieser Quellcode funkt ?! :freak:

PHP:
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
cout << "Text beschränkt auf x Zeichen", '/n' ;

int x;
cin >> x ;

char eingabe [x];


for (int i = 0; i<x ; i++ )
 {
 cout << "EINGABE:";        
 cin >> eingabe [i];  
 cout << endl;  
 }
 
for (int i =0 ; i<x;i++)
{
cout<< endl << eingabe [i] << endl;    
    
}

}
 
Das kommt auf den Compiler an, der GCC schluckt den Code so wie er ist, aber der VC++ Compiler meckert wegen "char eingabe [x];" herum.
Warum sollte denn der Code nicht funktionieren?
Klar, er ist nicht gerade das Gelbe vom Ei, aber compilieren lässt er sich trotzdem, denn dem Compiler ist das relativ egal, solange die Syntax korrekt ist!

Gruß
BlackMark
 
Das sollte nicht funktionieren weil das Zeug für eine nicht definierte array größe auf dem Heap liegen müsste !
 
Zuletzt bearbeitet:
Ja, das erkennt der VC++ Compiler auch und gibt eine Fehlermeldung aus, der GCC offensichtlich nicht.
Hier sieht man mal wieder, dass sich nicht alle Compiler an den gleichen Standard halten!

Gruß
BlackMark
 
Ja, sieht so aus als würde der GCC das ganze selbst in die Hand nehmen und das Array auf dem Heap erstellen, der VC++ jedoch braucht den richtigen Code.
Dass es funktioniert ist gut und recht, jedoch solltest du den Code nicht so verwenden, weil sonst die Gefahr besteht, dass dein Programm mal einfach so abschmiert.
Gleich wie man bei C-Arrays immer die NULL am Ende berücksichtigen sollte, denn auch wenn es manchmal gut geht, so kann es doch auch zum Absturz des Programms führen.

Gruß
BlackMark
 
Der GCC entscheidet sich also nach dem C99-Standard zu handeln, obwohl es ein C++ Compiler ist.
In dem Fall ist es wohl zur Abwechslung mal nicht Microsoft die sich nicht an den Standard halten :D

Gruß
BlackMark
 
Vielen Dank !!!
PS. ich hab den DEV-Compiler benutzt, wollts die ganze Zeit schon erwähnen !
 
Dir auch den Tipp: Dev-C++ ist tot. Nimm Code::Blocks. Ist sehr ähnlich, wird aber weiter entwickelt und hat nicht so viele Fehler.
 
Ich weiß aber ich halte zu DEV durch gute und schlechte Zeiten auch wenn er schon tot ist :D
 
Zurück
Oben