VS C++ 2010 und Dev-C++/Code::Blocks
-
Hallo,
hätte eine ganz simple Frage:
Folgendes geht bei dev-C++/Code::Blocks, aber nicht bei VS C++
#include <stdio.h> int main() { int a = 1; printf("L"); int b = 2; /* vor dem ersten printf() geht es bei VS, aber so nicht */ printf("%d", b); getchar();/* damit Fenster in dev-C++ nicht schließt */ return 0; }
Fehlermeldung in VS: b soll angeblich nicht deklariert sein
Kann man das irgendwie umstellen? Oder ist das Fehler in VS C++ 2010?
Danke
Gruß
-
Bitte genaue Fehlerbeschreibung mit Fehlernummer vom Compiler usw...
Bist du sicher, dass du den Code als C++ compilierst? Weil im normalen C müssen Variablendeklarationen am Anfang eines Anweisungsblocks stehen, und das tut deine Zeile mit dem b eben nicht... Also entweder C++-Compilierung oder C-Code
-
Hallo,
also Fehlermeldung in VS C++:
error C2143: Syntaxfehler: Es fehlt ";" vor 'Typ'
error C2065: 'b': nichtdeklarierter BezeichnerHat sich aber dann wohl geklärt, also nach deiner Erklärung.
("Weil im normalen C müssen Variablendeklarationen am Anfang eines Anweisungsblocks stehen")Uns wurde gesagt, wenn wir VS C++ 2010 benutzen, dann auf jeden Fall darauf achten, dass alle Code-Files mit *.c enden, denn C wird benutzt, nicht C++.
Dann müsste ja alles klar sein.
Danke für die Info
// edit: wenn ich die Datei in *.cpp umbenenne, dann geht es
-
Es wird je nach Dateiendung C oder C++ kompiliert.
Dein Quellcode ist jedenfalls kein gültiges C, aber gültiges C++. Deshalb kompiliert es auch, wenn du die C++ Endung (*.cpp) für die Datei nimmst.
In C müssen Variablendeklarationen, wie bereits gesagt, am Blockanfang stehen:
#include <stdio.h> int main() { int a = 1, b = 2; printf("L"); printf("%d", b); getchar(); return 0; }
-
nnnn schrieb:
Es wird je nach Dateiendung C oder C++ kompiliert.
Dein Quellcode ist jedenfalls kein gültiges C, aber gültiges C++.
Doch, der Quellcode ist durchaus gültiges C, aber nur nach C99, nicht nach C89 bzw. C90.
Wichtigste Neuerungen von C99
Frei platzierbare Deklaration von Bezeichnern (in C90 durften diese nur am Anfang eines Blocks stehen).http://de.wikipedia.org/wiki/C99
D.h. man muß VS einfach beibringen, den Code als C99 zu compilieren.
Wie man das macht, weiß ich allerdings nicht.Bei GCC geht das mit std=c99.
In C müssen Variablendeklarationen, wie bereits gesagt, am Blockanfang stehen:
Nein, müssen sie nicht.
In C99 ist das erlaubt. Siehe oben.
-
Anderer schrieb:
D.h. man muß VS einfach beibringen, den Code als C99 zu compilieren.
Wie man das macht, weiß ich allerdings nicht.VS kann kein C99.
Grüssli
-
dravere_off schrieb:
Anderer schrieb:
D.h. man muß VS einfach beibringen, den Code als C99 zu compilieren.
Wie man das macht, weiß ich allerdings nicht.VS kann kein C99.
Grüssli
Mistcompiler das ist.