Schnelle Frage
-
Interesssant! schrieb:
Aber warum werden Funktionen dann so oft mit foo(void) angegeben..
Das macht man in C++ doch gar nicht. Du guckst Dir wahrscheinlich C-Quellcode an. Da macht das einen Unterschied. In C++ kann man das void weglassen, ohne dass es die Bedeutung verändert. Man kann mit oder ohne void eine Funktion deklarieren, die keine Parameter entgegen nimmt. In C bedeutet das Weglassen von void hier nur, dass man die Parametertypen nicht weiter spezifizieren will. Somit kann der C Compiler auch nicht überprüfen, ob Du die Funktion richtig aufrufst oder nicht. Folgendes wird zB von einem C-Compiler gefressen:
void f(); void g(void) { f(3.14159265); }Mit einem zusätzlichen void klappt das dann nicht mehr:
void f(void); void g(void) { f(3.14159265); }test.c:4:3: error: too many arguments to function 'foo'
-
krümelkacker schrieb:
Das macht man in C++ doch gar nicht.
Man nicht, aber Microsoft schon.
-
@krümelkacker ich arbeite zwar nicht mit C aber wie kann der Programmierer mit dem übergebenen Parameter arbeiten?
va_list? oder gibt es da noch etwas anderes?
-
oheoheh schrieb:
@krümelkacker ich arbeite zwar nicht mit C aber wie kann der Programmierer mit dem übergebenen Parameter arbeiten?
va_list? oder gibt es da noch etwas anderes?
Wenn ich deine Frage richtig verstehe, dann solltest du mal bei einem guten Grundlagen Buch anfangen.
Parameter benutzt man, indem man sie angibt:void foo(int i) { //... } int main() { foo(2); }
-
Wenn ich deine Frage richtig verstehe
Nein, hast du nicht. Er bezog sich auf folgenes Beispiel:
void f(); void g(void) { f(3.14159265); }Die Frage ist: Wie kann man innerhalb von f auf 3.13159265 zugreifen?
-
Vllt. Asm ?
mov bla,[esp + x]
-
Wow ist das cool! Hey kennt ihr noch mehr interessante (nicht immer selbstverständliche) sachen aus C? Ich könnte damit Leute mit seltsamem verhalten gut aussehenden Programmen ärgern.
-
Felixxx schrieb:
Vllt. Asm ?
mov bla,[esp + x]Digga, was ist 'bla'? :xmas1:
Du hast eine Funktion:void foo() { // Was steht hier wenn ich foo(3.123123); aufrufe? }
-
Wenn du variable Parameterlisten willst, dann schau dir das an:
http://www.cplusplus.com/reference/clibrary/cstdarg/va_start/
-
EyDigga schrieb:
Felixxx schrieb:
Vllt. Asm ?
mov bla,[esp + x]Digga, was ist 'bla'? :xmas1:
Du hast eine Funktion:void foo() { // Was steht hier wenn ich foo(3.123123); aufrufe? }Ja, kann man sich dazudenken, nehme ich mal an. Vorposter scheint aber eh was niceres zu kennen.
-
neoexpert schrieb:
Wow ist das cool! Hey kennt ihr noch mehr interessante (nicht immer selbstverständliche) sachen aus C? Ich könnte damit Leute mit seltsamem verhalten gut aussehenden Programmen ärgern.
hmm das war keine Ironie. Kennt ihr welche?
-
Hach, das erinnert mich an die Zeit, in der ich angefangen habe C zu lernen, mit einem super Buch. Bis zur letzten Seite wurde nirgendwo erwähnt, wie man Funktionen schreibt, die keinen Parameter haben oder nichts zurückgeben. Hoffentlich habe ich das noch irgendwo in der Gerümpelkammer, ich würde es gerne zeremoniell verbrennen!