Funktionen: Diskusionsthread

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Antworten
Metamorph
Beiträge: 123
Registriert: Sa Jul 05, 2008 12:27 pm

Funktionen: Diskusionsthread

Beitrag von Metamorph » Mo Jul 07, 2008 9:07 pm

Ich habe hier einen Diskusionsthread zum Artikel über die Funktionen erstellt.
Hier der Link:

http://tutorial.proggen.org/doku.php?id=c:funktionen

Wenn ihr Verbesserungsvorschläge zur Rechtschreibung, Ausdrucksweise, Vollständigkeit oder den Beispielen habt, dann postet sie bitte in dieses Forum.
Fallen jemandem bessere Beispiele ein?
Ich finde meine grauenhaft. ^^

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Funktionen: Diskusionsthread

Beitrag von Kerli » Mo Jul 07, 2008 10:25 pm

Wie es eh schon einmal erwähnt worden ist solltest du glaub ich [Datentyp] besser durch [Rückgabewert] ersetzen.
Metamorph hat geschrieben:Fallen jemandem bessere Beispiele ein?
Ich finde meine grauenhaft. ^^
So schlecht sind sie doch nicht. Ich würd nur ein Funktion nicht unbedingt add nennen wenn sie eigentlich nicht addieren tut sondern das Ergebnis ausgibt. Das ist vielleicht etwas i-Tüpfelreiterei aber an der Uni hätt mir das schon Punkteabzug gebracht :D
Prototypen haben noch einen weiteren Zweck: Sie helfen dem Compiler Fehler besser zu finden
Wie das? Ich hab davon noch nie gehört...
Du könntest höchstens erwähnen, dass man dadurch die Deklarationen in getrennt headerdateien schreiben kann, aber ws sollten wir da eher ein eigenes Kapitel machen.

Sonst ist es eigentlich eh ganz gut ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Metamorph
Beiträge: 123
Registriert: Sa Jul 05, 2008 12:27 pm

Re: Funktionen: Diskusionsthread

Beitrag von Metamorph » Mo Jul 07, 2008 10:36 pm

Danke für die Hinweise.
Kerli hat geschrieben:Wie es eh schon einmal erwähnt worden ist solltest du glaub ich [Datentyp] besser durch [Rückgabewert] ersetzen.
Ups, ich dachte, ich hätte das schon korrigiert. ^^
Kerli hat geschrieben:So schlecht sind sie doch nicht. Ich würd nur ein Funktion nicht unbedingt add nennen wenn sie eigentlich nicht addieren tut sondern das Ergebnis ausgibt. Das ist vielleicht etwas i-Tüpfelreiterei aber an der Uni hätt mir das schon Punkteabzug gebracht :D
Ja, stimmt.
Ich werde mir was einfallen lassen.
Kerli hat geschrieben: Prototypen haben noch einen weiteren Zweck: Sie helfen dem Compiler Fehler besser zu finden

Wie das? Ich hab davon noch nie gehört...
Du könntest höchstens erwähnen, dass man dadurch die Deklarationen in getrennt headerdateien schreiben kann, aber ws sollten wir da eher ein eigenes Kapitel machen.
Aua, da habe ich etwas durcheinandergebracht. :D

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Funktionen: Diskusionsthread

Beitrag von nufan » Mi Okt 08, 2008 9:38 pm

Hab den Text mal kurz überflogen und da ist mir eins aufgefallen:
Es müssen sogar noch nicht einmal die Parameter in die Prototypen eingegeben werden. Man kann auch einfach nur die Datetypen der Parameter, ohne ihre Namen, hineinschreiben. Diese Variante ist zwar zulässig, davon ist aber, aufgrund der Übersicht, strikt abzuraten.
Bei mir geben sowohl Borland als auch Visual C++ 2008 Fehlermeldungen bei folgendem Programm aus:

Code: Alles auswählen

#include <stdio.h>

void function ();

int main ()
{

  int i=0;

  function (i);

  getchar ();
  return 0;

}


void function (int i)
{

  printf ("%d", i);

}
Bei VC++ siehts ein klein wenig anders aus, aber die Fehlermeldung ist im Prinzip die gleiche:
VC++ hat geschrieben:error C2660: 'function': Funktion akzeptiert keine 1 Argumente
Borland hat geschrieben:Error: noname00.cpp(10,15):Extra parameter in call to function()
Also ist das wirklich gültig? Oder compilerabhängig?

Lg

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Funktionen: Diskusionsthread

Beitrag von Dirty Oerti » Do Okt 09, 2008 2:00 pm

Das ist eher so gemeint:

Code: Alles auswählen

int funktion(int);


int main()
{
   int foo = funktion(4);
}

int funktion(int i)
{
   return i;
}
Und das funktioniert auch. Denke ich.
:)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Funktionen: Diskusionsthread

Beitrag von nufan » Do Okt 09, 2008 4:21 pm

Dirty Oerti hat geschrieben:Das ist eher so gemeint:

Code: Alles auswählen

int funktion(int);


int main()
{
   int foo = funktion(4);
}

int funktion(int i)
{
   return i;
}
Und das funktioniert auch. Denke ich.
:)
Hoppla, hab's wohl zu schnell überflogen :D
So funktionierts natürlich.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Funktionen: Diskusionsthread

Beitrag von fat-lobyte » Mo Okt 13, 2008 7:17 pm

Mit nem reinen C- Compiler hätts funktioniert.
Versucht mal das mit "gcc" zu kompilieren.
Haters gonna hate, potatoes gonna potate.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Funktionen: Diskusionsthread

Beitrag von nufan » Mo Okt 13, 2008 7:22 pm

fat-lobyte hat geschrieben:Mit nem reinen C- Compiler hätts funktioniert.
Versucht mal das mit "gcc" zu kompilieren.
Stimmt. Also hab ichs doch nicht ganz falsch verstanden :)

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Funktionen: Diskusionsthread

Beitrag von fat-lobyte » Do Okt 16, 2008 11:15 am

dani93 hat geschrieben:
fat-lobyte hat geschrieben:Mit nem reinen C- Compiler hätts funktioniert.
Versucht mal das mit "gcc" zu kompilieren.
Stimmt. Also hab ichs doch nicht ganz falsch verstanden :)
Das soll nicht darüber hinwegtäuschen, dass das nach den meisten gängigen C standards nicht erlaubt ist. Kompiliere es mit dem "std=c99" flag, und du wirst (hoffentlich) einen Fehler oder zumindest ein Warning bekommen.
Ich wollte eigentlich nur Zeigen, wie C früher war.
Haters gonna hate, potatoes gonna potate.

Antworten