Ich hab mich heute mal getraut, meine C-Code mit dem Microsoft Compiler (“Werkzeug des Teufels”) zu übersetzten. Irgendwie warf der gleich am Anfang den Fehler:
“error C2143: syntax error : missing ‘;’ before ‘type’”
Mit ein bisschen Probieren hab ich dann gemerkt, dass man wohl alle Variablendefinitionen am Anfang der Methoden schreiben muss. Und Definitionen a la “int x = y+2″ sind auch keine gute Idee. *arg* Ich bin ja nicht so der C-Hacker… aber das ist doch wirklich Schei**. Komisch nur, dass es mit dem GCC geht. Mit Java hat man es eben doch einfacher.



Also der gcc kennt ja die Option -ansi oder sowas wie -std=c89 und da gehen auch Dinge wie int len = strlen(str); durch. Also entweder ist der MS Compiler echt scheiße, oder du machst was falsch
.
Naja… ich bin mir nicht so sicher was Microsoft an C Version unterstütz, aber soweit ich weiß unterstützen die offiziell ja eh kein ansi, c90, c99 oder irgendwelche anderen Spezifikationen.
Ich habe hier den “Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80×86 Copyright (C) Microsoft Corp 1984-1998. All rights reserved.” cl.exe Compiler und der hat mit folgendem Programm schon Probleme:
1: #include <stdio.h>
2:
3: int main() {
4: printf("test\n");
5: int y;
6: y = 2;
7: printf("y: %d\n",y);
8: return 0;
9: }
Das ganze lässt sich mit folgendem Fehler nicht compilieren.
(5): error C2143: syntax error : missing ';' before 'type'
(6): error C2065: 'y' : undeclared identifier
Mit dem gcc kann ich das in allen erdenklichen Version (c89, iso9899:1990, iso9899:199409, c99, c9x, iso9899:1999, iso9899:199x, gnu89, gnu99, gnu9x) ohne Fehler compilieren! Der Microsoft Compiler stinkt, oder ich hab keinen Plan von C…
Funktioniert bei mir mit Visual C++ 6.0 und VS .NET 2003.