"void" programmiersprache C?

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/quotvoidquot_programmiersprache_c_183003/page_1 - zur Vollversion wechseln!


Qualle schrieb am 30.07.2007 um 13:47

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.


Nico schrieb am 30.07.2007 um 13:56

welche fehlermeldung?


hctuB schrieb am 30.07.2007 um 14:00

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 schrieb am 30.07.2007 um 14:05

Was soll bitte die Frage sein?
Was "void" heißt? :confused:
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 schrieb am 13.08.2007 um 03:22

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 schrieb am 17.08.2007 um 23:00

Zitat von Armax
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 schrieb am 17.08.2007 um 23:04

Zitat von Lukas
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! :p


Lukas schrieb am 17.08.2007 um 23:06

Zitat von COLOSSUS
Ach, die braucht man doch hauptsaechlich in ekligen Kacksprachen wie Java! :p

oder bei C++ mit dem Qt toolkit was bestimmt kein kack ist :p :o

e: aber hauptsaechlich wird trotzdem, auch bei settern, ein parameter uebergeben...


semteX schrieb am 17.08.2007 um 23:06

he, das setter und getter konzept find i ned eklig :P


that schrieb am 17.08.2007 um 23:09

Zitat von Lukas
in diesem fall zwar nicht aber allgemein:
schon mal was von settern gehoert?

Klar, das sind irgendwelche Hunde. :p


Zitat von Lukas
setFoo() { foo = bar;}

Normalerweise geht das so:

Code:
void setFoo(int newFoo) { foo = newFoo; }
int getFoo() { return foo; }


COLOSSUS schrieb am 17.08.2007 um 23:09

Wenn du noch nie gesehen hast, wie bspw. Ruby das macht, kann ich das auch irgendwo nachvollziehen ;)


Lukas schrieb am 17.08.2007 um 23:10

Zitat von that
Klar, das sind irgendwelche Hunde. :p




Normalerweise geht das so:

Code:
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 :p


that schrieb am 17.08.2007 um 23:13

So, genug offtopic. :)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025