Ich stieß auf den folgenden Unterschied in Bezug auf Funktionsdefinition/Deklaration zwischen C und C++.
In C++ erhalte ich eine Fehlermeldung "Funktionsname ist ungültiges Kennzeichen", wenn ich eine Funktion aufrufe, bevor ich sie deklariere und definiere, was für mich in Ordnung ist, da es vernünftig klingt.
In C mit Visual Studio Compiler erhalte ich die Fehlermeldung, als ich das folgende Programm kompilierte:
Fehler C2371: 'fun': Redefinition; unterschiedliche Grundtypen
Und in gcc-4.3.4 wurde es erfolgreich mit nur dieser Warnung ausgeführt:
Warnung: widersprüchliche Typen für 'fun'
Hier geht es zum Programm:
#include
int main(){
fun();
return 0;
}
void fun(){
printf("Es macht Spaß");
}
Ist es also in C in Ordnung, einfach eine Funktion aufzurufen und sich später um die Definition zu kümmern?! Und warum verhalten sich die Compiler unterschiedlich?