The Daily WTF



  • Power Off schrieb:

    ANSI/ISO/DIN/BS C++ : alles dasselbe.

    dann isses ja klasse, uns mit nem amerikanischen standard zu beeindrucken. wie heißt das auf indisch?

    volkard schrieb:

    also warum das void?

    Weil's im Standard eingefuehrt wurde, damit niemand mehr leere Parameterlisten ohne "void" schreibt.

    lies doch mal mehr über c++ und halt die klappe solang. dieses void ist so nutzlos wie deine Gegennzeichneten Tricks.



  • @volkard:

    Lies mal im C++ Standard:

    ISO 14882:2003 Chapter 8.3.5 Section 2 schrieb:

    The parameter list (void) is equivalent to the empty parameter list.

    Warum, meinst Du, steht das da wohl drin?



  • Es ist ja auch so, bestreitet ja niemand. Der Punkt ist: Man kann es genausogut auch nicht schreiben und das hat sich nicht nur eingebürgert sondern ist auch logischer.

    MfG SideWinder



  • Power Off schrieb:

    @volkard:

    Lies mal im C++ Standard:

    ISO 14882:2003 Chapter 8.3.5 Section 2 schrieb:

    The parameter list (void) is equivalent to the empty parameter list.

    Warum, meinst Du, steht das da wohl drin?

    Damit man in vorhandenen C-Codes nicht die voids rauspopeln muss.



  • Optimizer schrieb:

    Ich finde, dass man so extrem nicht sein muss. Sowas wie

    bool kannSpäterVertauschtWerden = (a > b)
    

    ist doch völlig in Ordnung. Auch ein == finde ich in Ordnung, man braucht sich natürlich nicht mit geschachtelten ?: zu verkünsteln.

    denkbar ist das. aber solchen code schreibe ich nicht. kommt irgendwie nicht vor. hab ich seit jahren nicht gemacht. vielleicht kommt's in langen funktionen öfters vor.



  • Power Off schrieb:

    In C++ wurde zuerst "foo()" geschrieben, heute "foo(void)". Damit ist man dem ANSI C Standard gefolgt.

    quelle?



  • Walli schrieb:

    Damit man in vorhandenen C-Codes nicht die voids rauspopeln muss.

    Umgekehrt ist's viel schlimmer: Ein C++ Programmierer meint, C zu koennen, weil er ja C++ kann, und schreibt dann sowas wie:

    int func()
    

    Was in C etwas voellig anderes bedeutet: naemlich, alle Argumente sind erlaubt. In ANSI C laengst verboten.



  • volkard schrieb:

    Power Off schrieb:

    In C++ wurde zuerst "foo()" geschrieben, heute "foo(void)". Damit ist man dem ANSI C Standard gefolgt.

    quelle?

    Guck doch selber, hier ein paar Stichworte: AT&T 2.0 Standard, AT&T 3.0 Standard, CFront, alles prae-ANSI/ISO C++.



  • Power Off schrieb:

    Guck doch selber, hier ein paar Stichworte: AT&T 2.0 Standard, AT&T 3.0 Standard, CFront, alles prae-ANSI/ISO C++.

    ich suche keinen standard, sondern einen außer dir, der sagt, daß man in c++ inzwischen (void) schreibt und früher nicht.



  • Power Off schrieb:

    Guck doch selber, hier ein paar Stichworte: AT&T 2.0 Standard, AT&T 3.0 Standard, CFront, alles prae-ANSI/ISO C++.

    ich suche keinen standard, sondern einen außer dir, der sagt, daß man in c++ inzwischen (void) schreibt und früher nicht.



  • volkard schrieb:

    Power Off schrieb:

    Guck doch selber, hier ein paar Stichworte: AT&T 2.0 Standard, AT&T 3.0 Standard, CFront, alles prae-ANSI/ISO C++.

    ich suche keinen standard, sondern einen außer dir, der sagt, daß man in c++ inzwischen (void) schreibt und früher nicht.

    Frueher, in den alten Standards, gab's kein "void" in C++ Parameterlisten.

    Seit es erlaubt ist, schreibe ich immer "void" fuer leere Parameterlisten in C++. Das sagt ganz klar: Keine Parameter. In Java darf man "void" immer noch nicht zur Deklaration leerer Parameterlisten benutzen.

    Man kann sich ueber Sinn und Unsinn void "void" in leeren Parameterlisten streiten. Jedenfalls fuer C++ und C halte ich es fuer sinnvoll, da es Missverstaendnisse vermeiden kann.



  • In Java darf man "void" immer noch nicht zur Deklaration leerer Parameterlisten benutzen.

    Dann wäre der Siegeszug von .NET wenigstens gewiss. Wieso soll ich etwas explizit hinschreiben wenn es implizit sowieso klar ist 😕

    MfG SideWinder



  • SideWinder schrieb:

    Dann wäre der Siegeszug von .NET wenigstens gewiss. Wieso soll ich etwas explizit hinschreiben wenn es implizit sowieso klar ist 😕

    Eben weil es bei C zu Missverstaendnissen kommen kann. Ein C++ oder Java Programmierer bekommt die Aufgabe, eine C-Library zu entwickeln (z.B. fuer JNI usw.) und wundert sich ueber die Ergebnisse. Ausserdem werden in einigen Umgebungen immer noch K&R-C-Compiler verwendet.

    Das Normungskommitte hat fuer 2003er ISO C++ Standard die Abkehr vom C89 Standard beschlossen, und erfordert jetzt, dass C++ Programme mindestens dem C90 Standard folgen (siehe z.B. Annex C.2).



  • Power Off schrieb:

    Das Normungskommitte hat fuer 2003er ISO C++ Standard die Abkehr vom C89 Standard beschlossen, und erfordert jetzt, dass C++ Programme mindestens dem C90 Standard folgen (siehe z.B. Annex C.2).

    ISO C++ von 2003? C90?



  • Power Off schrieb:

    Seit es erlaubt ist, schreibe ich immer "void" fuer leere Parameterlisten in C++. Das sagt ganz klar: Keine Parameter.

    Sicher, und das ist auch viel einfacher als es gleich wegzulassen.



  • Power Off schrieb:

    Ausserdem werden in einigen Umgebungen immer noch K&R-C-Compiler verwendet.

    das argument zieht nicht. du müßtest auch templates meiden, weil es in c keine gibt.



  • Walli schrieb:

    Sicher, und das ist auch viel einfacher als es gleich wegzulassen.

    Fuer mich (und fuer andere sicher auch) ist es eine Verbesserung der Lesbarkeit. *schulterzuck*



  • Power Off schrieb:

    Walli schrieb:

    Sicher, und das ist auch viel einfacher als es gleich wegzulassen.

    Fuer mich (und fuer andere sicher auch) ist es eine Verbesserung der Lesbarkeit. *schulterzuck*

    ja ne is klar...



  • Power Off schrieb:

    Walli schrieb:

    Sicher, und das ist auch viel einfacher als es gleich wegzulassen.

    Fuer mich (und fuer andere sicher auch) ist es eine Verbesserung der Lesbarkeit. *schulterzuck*

    Ist für dich auch BEGIN/END lesbarer als {, }? Eventuell wechselst du besser zu Pascal 🙂

    MfG SideWinder



  • SideWinder schrieb:

    Ist für dich auch BEGIN/END lesbarer als {, }? Eventuell wechselst du besser zu Pascal 🙂

    Pascal kann ich auch, aber das war kein Grund fuer mich,

    #define BEGIN {
    #define END }
    

    in jedes Programm zu schreiben! 😉


Anmelden zum Antworten