Anfänger - Funktionsstil Initialiesierung scheint eine Funktions Definition zu sein ...
-
Hai ...
Versuche mich seit wenigen Wochen in C/C++. Habe mir bereits einige Bücher zum Thema gekauft - welche ich natürlich noch durcharbeite
Habe folgendes simples Programm geschrieben und erhalte immer folgende Fehlermeldung:
error C2448: 'main': Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein.
Hier der Code:
// kleines Matheprogramm // #include <stdio.h> int zahla, zahlb; int main (zahla,zahlb) { printf ("Bitte geben sie die erste Zahl ein :"); scanf ("%d", &zahla); printf ("Bitte geben sie die zweite Zahl ein:"); scanf ("%d", &zahlb); berechnung(zahla,zahlb); printf ("Das ergebnis lautet :%d",ergebnis); fflush(stdin); getchar (); return 0; } int berechnung(zahla,zahlb) int ergebnis = zahla + zahlb;
Kann mir jemand dafür einen Ratschlag geben?
-
hi,
du versuchst die main funktion zu redefinieren. Das solltest du lieber lassen. Lasse die beiden Variablen in der main() einfach weg -> also nur main() schreiben. Du hast sie sowieso als globale Variablen definiert.
-
Erst einmal ein großes Danke. Nun wird es mir ein wenig klarer.
Nun kann ich doch eigentlich die Ergebnisberechnung durch ein #define ergebnis zahla+zahlb ersetzen - oder?
-
1. Es gibt keine C/C++ Sprache, es gibt C und es gibt C++.
2. Die Main-Funktion hat 3 mögliche Prototypen:int main(); int main(void); int main(int argc, char **argv); /* bzw char *argv[] */
alles andere ist nicht Standardkonform.
3. Es ist veraltet, den Datentyp im Funktionsparameter nicht stehe zu haben, und wenn, dann so:int main(argc,argv) int argc; char **argv; { ... }
-
Wie würde das in meinem Fall dann aussehen - und welche Vor- bzw. Nachteile hat das?
-
// kleines Matheprogramm // #include <stdio.h> int berechnung(zahla,zahlb); //Die funktion berechnung sollte nen prototypen haben, damit der compiler weis das die funktion irgednwo im code existiert. int main (void) { int zahla, zahlb; //Zahl A und B würde ich nich global definieren.. sie müssen bei dir nur in main gültig sein printf ("Bitte geben sie die erste Zahl ein :"); scanf ("%d", &zahla); printf ("Bitte geben sie die zweite Zahl ein:"); scanf ("%d", &zahlb); berechnung(zahla,zahlb); printf ("Das ergebnis lautet :%d",ergebnis); fflush(stdin); getchar (); return 0; } //Diene berechnungs funktion hat keinen Rumpf klammerung int berechnung(zahla,zahlb) { int ergebnis = zahla + zahlb; return eregnis; //Der wert sollte noch zurückgegeben werden }
-
eigentlich so.
int berechnung(int zahla, int zahlb);
und
fflush(stdin);
ist undefiniert, könnte sogar dein Rechner zum Explodieren bringen
-
Aller Anfang ist schwer. Werde die Kapitel über Funktionen noch mal durcharbeiten. Scheint nicht viel hängen geblieben zu sein. Bei Fragen wende ich mich wieder an euch.
Thanx
-
supertrux schrieb:
eigentlich so.
C/C++ Code:
int berechnung(int zahla, int zahlb);stimmt hast recht, hab ich übersehen.
-
So - nun habe ich wieder ein paar Fragen an euch - wobei mir meine Bücher irgendwie nicht helfen wollen - ist einfach zu allgemein.
Also, die Berechnungsfunktion sieht ja nun wie folgt aus:
int berechnung(zahla,zahlb) { int ergebnis = zahla + zahlb; return eregnis; //Der wert sollte noch zurückgegeben werden }
Der Compiler meckert nun, dass zahla und zahlb nicht deklariert seien. Das verwundert mich - da doch von der Main die Werte übergeben werden ?! (Liegt es vielleicht einfach daran, dass die variablen nur lokal - in der Main zur verfügung stehen?)
berechnung(zahla,zahlb);
Habe ich hier wieder etwas falsch verstanden?
Wäre auch hilfreich wenn mir jemand die Bemerkung aus Zeile 25 näher erläutern könnte.
(Gibt es bei euch eigentlich nen Bewertungssystem?)
-
shaun1981 schrieb:
Der Compiler meckert nun, dass zahla und zahlb nicht deklariert seien.
liest du überhaupt, was wir schreiben?
-
Mensch sei doch nicht so AGGRO. Natürlich lese ich was ihr mir schreibt - nur fällt der Groschen einfach nicht. Dies ist doch ein Forum oder irre ich mich da? Wo liegt denn das Problem?
Versuche mich ernsthaft damit auseinander zu setzen.
// kleines Matheprogramm // #include <stdio.h> #include <iostream> int berechnung (int a,int b); int main () { int zahla, zahlb, ergebnis; //Zahl A und B würde ich nich global definieren.. sie müssen bei dir nur in main gültig sein printf ("Bitte geben sie die erste Zahl ein :"); scanf ("%d", &zahla); printf ("Bitte geben sie die zweite Zahl ein:"); scanf ("%d", &zahlb); ergebnis = berechnung(zahla,zahlb); printf ("Das ergebnis lautet :%d",ergebnis); fflush(stdin); getchar (); return 0; } int berechnung(int a, int b) { int wert = a + b; return wert; //Der wert sollte noch zurückgegeben werden }
Ein Schritt nach vorne, zwei zurück.
Hatte das so verstanden, dass ich mit dem Funktionsaufruf die Parameter zahla und zahlb übergeben müsse. War ja auch richtig. Nur habe ich dann in der Funktion selbst folgendes verbrochen :
int berechnung(int zahla, int zahlb)
Also habe ich die Werte überschrieben?