C-Standard gefolgt von Vermisstenmeldungen (Wirthi/Moritz)

Foruminternes: Ankündigungen, Bekanntmachungen, Spielregeln
Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

C-Standard gefolgt von Vermisstenmeldungen (Wirthi/Moritz)

Beitrag von Kerli » Mi Jul 16, 2008 1:38 pm

Xin hat geschrieben:Warum nicht explizit angeben, wenn man nichts übergeben möchte?
Programmierer sind faul :D

Ich bin es halt anders gewohnt. Bei dir kommt das ws noch von C...
Xin hat geschrieben:Ich würde mich nicht drum streiten, ich kann auch gut ohne dieses void leben, aber grundsätzlich finde ich es nicht unangenehm.
Es sollte im Tutorial halt nur nach Möglichkeit einheitlich sein.
"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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: c:logische_operatoren

Beitrag von Xin » Mi Jul 16, 2008 1:43 pm

Xin hat geschrieben:Ich würde mich nicht drum streiten, ich kann auch gut ohne dieses void leben, aber grundsätzlich finde ich es nicht unangenehm.
Es sollte im Tutorial halt nur nach Möglichkeit einheitlich sein.[/quote]
Umfrage, Würfeln, oder soll ich mich einfach breitschlagen lassen?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

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

Re: c:logische_operatoren

Beitrag von nufan » Mi Jul 16, 2008 1:48 pm

Klar, der Standard legt keinen Rückgabetyp für selbstgeschriebene Funktionen fest. ^^
Standards...

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

Re: c:logische_operatoren

Beitrag von Kerli » Mi Jul 16, 2008 1:58 pm

dani93 hat geschrieben:
Klar, der Standard legt keinen Rückgabetyp für selbstgeschriebene Funktionen fest. ^^
Standards...
Kann man da eventuell eine Ablehnung gegen Standards erkennen ;)

Aber stell dir einmal vor was wäre wenn es keinen Standard für C/C++ gäbe. Dann hätten wir sicherlich einmal einen Windowsstandard, einen Linuxstandard und ws noch ein paar andere. Und wie sollte man da noch für verschiedene Plattformen entwicckeln können, wenn es selbst jetzt mit einer standardisierten Sprache nicht unbedingt einfach ist...
"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

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

Re: c:logische_operatoren

Beitrag von fat-lobyte » Mi Jul 16, 2008 4:21 pm

dani93 hat geschrieben:
Klar, der Standard legt keinen Rückgabetyp für selbstgeschriebene Funktionen fest. ^^
Standards...
Hat da jemand was gegen Standards? :evil:

Hm, ich weiß ja nicht wies dir geht, aber hast du schon mal versucht dein Programm außerhalb von deinem Lieblingscompiler zu kompilieren?
Es gibt nämlich Leute, die bemühen sich ihre Programme ALLEN (auch den Windoofern) zur verfügung zu stellen, und möglichst viele Compiler zu unterstützen. Es ist schon _mit_ standards unheimlich Schwer alle Compiler zufrieden zu stellen, da doch jeder seine Macken hat.
Wie würde das ohne aussehen? Sollen etwa mehr #fidef's als echter Code im Source stehen? Oder bevorzugst du diese Variante:
main_msvc6.cpp
main_msvc8.cpp
main_msvc9.cpp
main_mingw295.cpp
main_mingw35.cpp
main_gcc295.cpp
main_gcc3x.cpp
main_gcc4x.cpp
main_intel.cpp
main_aix.cpp
....


Sorry, aber da musste ich jetzt ein bisschen Flamen. Man sollte die Arbeit der Working group, die den Standard entwickeln respektieren, denn sie ist nicht wenig.
Haters gonna hate, potatoes gonna potate.

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

Re: c:logische_operatoren

Beitrag von nufan » Mi Jul 16, 2008 4:31 pm

fat-lobyte hat geschrieben: Sorry, aber da musste ich jetzt ein bisschen Flamen. Man sollte die Arbeit der Working group, die den Standard entwickeln respektieren, denn sie ist nicht wenig.
Ich hab ja nichts gegen Standards. Ich finde es bloß ein bisschen komisch, dass der Standard für main "int" vorschreibt, bei Unterprogrammen jedoch nicht. Klar, wenn man nen andern Typ brauchst nimmst man char, float usw, aber ich habe gedacht, wenn es keinen Rückgabewert gibt, verwendet man "int".

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

Re: c:logische_operatoren

Beitrag von fat-lobyte » Mi Jul 16, 2008 4:39 pm

dani93 hat geschrieben:Ich hab ja nichts gegen Standards. Ich finde es bloß ein bisschen komisch, dass der Standard für main "int" vorschreibt, bei Unterprogrammen jedoch nicht. Klar, wenn man nen andern Typ brauchst nimmst man char, float usw, aber ich habe gedacht, wenn es keinen Rückgabewert gibt, verwendet man "int".
Ich glaub du verwechsest was. Das was du "Unterprogramm" nennst, sind in wirklichkeit funktionen. Wenn du einen Rückgabewert hast dann gibts du ihn zurück, und deklarierst die funktion mit dem richtigen typen.
Wenn nicht, ist er void.
Main ist auch nichts anderes als eine Funktion. Allerdings ist sie der Einstiegspunkt, und muss somit von jemandem Aufgerufen werden. Das wird vom Betriebssystem erledigt. Damit das Betriebssystem mit deiner main funktion kommunizieren kann, muss deine main funktion einem Vertrag folgen. Und dieser ist eben

Code: Alles auswählen

int main(int argc, char** argv)
Du darfst die Argumente weglassen, und auch das return statement (nur bei der main Funktion!), alles andere ist aber falsch.
Wieso manche glauben das es void ist, kommt vom (Ur)alten K&R C. Früher durfte man den typ des Parameters und der Funktion weglassen, dann wurde int angenommen. Kleines beispiel, was der gcc ohne warnungen schluckt:

Code: Alles auswählen

#include <stdio.h>

main(argc, argv)
    char** argv;

{
    register x;
    auto y;

    if (argc > 1)
            printf("Argument %s\n", argv[1]);

    x = 3;
    y = 6;

    printf ("%d + %d = %d\n", x, y, add(x, y));
        
    return 0;
}

add(a, b, unused)
{
    return a+b;
}

Vielleicht verstehst du jetzt, wieso standards so wichtig sind.
Haters gonna hate, potatoes gonna potate.

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

Re: c:logische_operatoren

Beitrag von nufan » Mi Jul 16, 2008 4:43 pm

Vielleicht verstehst du jetzt, wieso standards so wichtig sind.
Alles klar.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: c:logische_operatoren

Beitrag von Xin » Mi Jul 16, 2008 5:09 pm

fat-lobyte hat geschrieben:Main ist auch nichts anderes als eine Funktion. Allerdings ist sie der Einstiegspunkt, und muss somit von jemandem Aufgerufen werden. Das wird vom Betriebssystem erledigt. Damit das Betriebssystem mit deiner main funktion kommunizieren kann, muss deine main funktion einem Vertrag folgen. Und dieser ist eben

Code: Alles auswählen

int main(int argc, char** argv)
Du darfst die Argumente weglassen, und auch das return statement (nur bei der main Funktion!), alles andere ist aber falsch.
main muss dem Vertrag folgen, denn die Progammiersprache auferlegt.

Code: Alles auswählen

void main( void )
{
}
zu verbieten und dafür

Code: Alles auswählen

int main( void )
{
  // keine return Anweisung!
}
als richtig zu deklarieren, das ist definitiv nichts, wofür ein Standard-Kommitee in irgendeiner Form Respekt verdient hätte.

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

Re: c:logische_operatoren

Beitrag von Dirty Oerti » Do Jul 17, 2008 1:02 pm

Standards sind meiner Ansicht nach (zumindest bei dem Thema hier) nicht wirklich von Nutzen.
Wer schlau ist, und sein Programm kompatibel zu anderen Compilern bzw Betriebssystemen oder Prozessoren machen will, der schafft das auch ohne Standard, denn er/sie ist ja schlau.
Teilweise würde ich so ein Komitee fast als ABM, Arbeitsbeschaffungsmaßnahme ansehen, aber man will ja nicht zu drastisch sein :)

Und programmiert man in einer Gruppe oder schreibt, wie hier, ein gemeinsames Tutorial, dann kann man sich ja untereinander auf einen "Standard" einigen, der den Anforderungen gerecht wird.

MfG
Daniel :)
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.

Antworten