Warum FILE-pointer deklariert werden müssen aus main() in Visual Studio 2010?
Ich versuche zu kompilieren eine einfache ansi-C-Beispiel in Visual Studio 2010 und stieß mit diesem Fehler kompilieren:
Fehler:
patchC.c(5): error C2275: 'DATEI' : unzulässige Verwendung dieses Typs als Ausdruck
Program1:
#include <stdio.h>
int main(void) {
printf("Hello world!\n");
FILE *fp;
fp = fopen("test.txt", "r");
return 0;
}
Dem gleichen Programm ohne Fehler kompiliert gcc v4.5.2.
Aber, wenn ich die "FILE *fp;" - Zeile aus der main(), das Programm kompilieren würde.
Program2:
#include <stdio.h>
FILE *fp;
int main(void) {
printf("Hello world!\n");
fp = fopen("test.txt", "r");
return 0;
}
Ich nicht herausfinden, warum dieses Verhalten, jemand beantworten könnte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Visual C++ - compiler unterstützt nur den C90. Im C90, alle Deklarationen von lokalen Variablen müssen am Anfang eines Blocks, bevor Anweisungen. Also, die Erklärung von
fp
immain
kommen muss, bevor dieprintf
:C99 und C++ erlauben Deklarationen zu sein, vermischt mit anderen Anweisungen in einem block. Der Visual C++ - compiler nicht unterstützt C99. Wenn Sie kompiliert deinen original-code als C++ - Datei (mit einem .cpp-Erweiterung), wäre es erfolgreich kompiliert.