"void" programmiersprache C?
Qualle 30.07.2007 - 13:47 1506 12
Qualle
Banned
|
Hallo zusammen!!
So steht das in meinem Buch:
Was also ist die Ursache für die Fehlermeldung? Was Sie noch nicht wissen können,leider akzeptiert der Compiler die Anweisung double sqrt2(); nicht als Funktionsprototypen. Die Ursache ist das leere Klammerpaar. Der Compiler nimmt an, Sie hätten vergessen, in den Klammern die Funktionsparameter aufzufüühren und beschwert sich. Tun Sie dem Compiler den Gefallen und weisen explizit darauf hin, dass es sich bei sqrt2 um eine parameterlose Funktion handelt.
Bearbeitet von Qualle am 30.07.2007, 14:12
|
Nico
former person of interest
|
welche fehlermeldung?
|
hctuB
Bloody Newbie
|
schon mal ohne klammer versucht  "Tun Sie dem Compiler den Gefallen und weisen explizit darauf hin, dass es sich bei sqrt2 um eine parameterlose Funktion handelt."
|
Armax
OC Addicted
|
Was soll bitte die Frage sein? Was "void" heißt? Was willst eigentlich mit einer Funktion der nicht mal irgendein Parameter übergeben wird? Macht das Sinn? An deiner Stelle würd ich den Prototypen void sqrt2(double zahl1); verwenden, wenn du ein Programm für sqrt(zahl) schreiben willst...
|
Marcellus
OC Addicted
|
Kanns sein, dass du extern gegen ein file mit der funktion verlinkt und du das ganze erst mit extern ... anschreiben musst?
void ist nur ein quasi datentyp, damit du einen gegensatz zu int, char ... hast, das bedeutet nur, dass du keinen datentypen hast. Das brauchst du aber auch nur gerade dann, wenn du eine funktion ohne rückgabewert verwendest oder diesen hässlichen void* verwendest.
Mein guter rat, lass es so stehen, wenn die funktionsdefinition wirklich
double sqrt2();
ist und du wirklich keien parameter übergeben willst ist das sowohl c89, als auch c99 konform. Wenn dein compiler trotzdem stänkert würd ich mir einen neuen suchen.
|
Lukas
Here to stay
|
Was willst eigentlich mit einer Funktion der nicht mal irgendein Parameter übergeben wird? Macht das Sinn? in diesem fall zwar nicht aber allgemein: schon mal was von settern gehoert? setFoo() { foo = bar;}
|
COLOSSUS
AdministratorGNUltra
|
in diesem fall zwar nicht aber allgemein: schon mal was von settern gehoert? setFoo() { foo = bar;} Ach, die braucht man doch hauptsaechlich in ekligen Kacksprachen wie Java!
|
Lukas
Here to stay
|
Ach, die braucht man doch hauptsaechlich in ekligen Kacksprachen wie Java!  oder bei C++ mit dem Qt toolkit was bestimmt kein kack ist  e: aber hauptsaechlich wird trotzdem, auch bei settern, ein parameter uebergeben...
|
semteX
begehrt die rostschaufel
|
he, das setter und getter konzept find i ned eklig :P
|
that
Hoffnungsloser Optimist
|
in diesem fall zwar nicht aber allgemein: schon mal was von settern gehoert? Klar, das sind irgendwelche Hunde.  setFoo() { foo = bar;} Normalerweise geht das so: void setFoo(int newFoo) { foo = newFoo; }
int getFoo() { return foo; }
|
COLOSSUS
AdministratorGNUltra
|
Wenn du noch nie gesehen hast, wie bspw. Ruby das macht, kann ich das auch irgendwo nachvollziehen
|
Lukas
Here to stay
|
Klar, das sind irgendwelche Hunde. 
Normalerweise geht das so:
void setFoo(int newFoo) { foo = newFoo; }
int getFoo() { return foo; }
siehe meine edit... hab aber bei so manchen wackeligen KDE-klassen auch setter ohne parameteruebergabe gesehen
|
that
Hoffnungsloser Optimist
|
So, genug offtopic.
|