void



  • Mit was könnte denn () beim schnellen Draufschauen verwechselt werden?
    Mit einer Funktion mit einem Parameter? 😉



  • in kompilern wie VC++ und BCB gibt es sowas wie syntax highlighting 😉
    die heben das void ziemlich kräftig heror und es geht nicht so schnell unter wie 2 schwarze zeichen mehr.

    ich selbst hab bisweilen immer () benutzt, aber das mit dem void sieht irgendwie besser aus *find* auch wenn es vielleicht "doppelt gemoppelt" ist.



  • Das mit dem void ist nicht doppelt gemoppelt, sondern eine syntaktische Grausamkeit, die man in ANSI-C einführen musste, weil man die Kompatibilität zu altem C, wo () in Deklarationen eben für "egal" stand, wahren wollte. Warum grausam? foo(int) bedeutet, Funktion die ein int nimmt. foo(char), dass sie ein char-Argument nimmt. Wieso bedeutet foo(void) dann nicht, dass die Funktion ein void-Argument nimmt? Das ist eine syntaktische Sonderregel, die überhaupt nur funktioniert, weil es keine void-Objekte gibt, die man Funktionen übergeben könnte. C++ hat IMHO mehr als genug Sonderregeln ...



  • also im c++ ist es standard, dass man void NICHT verwendet ?
    und nur überbleibsel von C-Zeiten ?



  • ja



  • also im c++ ist es standard, dass man void NICHT verwendet ?

    Der Standard behandelt foo() und foo(void) exakt gleichwertig (s.o.).
    Auch Compiler machen hier keinen Unterschied.

    Es sind lesende/schreibende Menschen, die hier Besonderheiten generieren.
    Also reine Geschmackssache, und Geschmäcker wechseln. 😉

    Meine persönliche Empfehlung: void weglassen, da hier nicht logisch.



  • @Bashar & Erhard
    Euer Kontra-Argument is wegen z.B. funktionen die void* als parameter haben, hab ich das richtig verstanden?

    klingt plausiebel. *mit()weitermacht*



  • @Sergius
    sprich doch bitte nicht von "Standard", weil man damit idr. den C++-Standard meint. Sag doch, "üblich" oder "guter Stil"



  • THE_FreaK schrieb:

    @Bashar & Erhard
    Euer Kontra-Argument is wegen z.B. funktionen die void* als parameter haben, hab ich das richtig verstanden?

    Nein, das war nicht mein Argument.



  • Dass man den Pointer-Datentyp void* als Formalparameter/Argument verwenden darf ist klar.

    Das hat aber nichts mit der leeren Parameterliste zu schaffen. Warum soll man in die "Leere" void rein schreiben, damit man sieht, dass die "Leere" leer (=void) ist?

    Fazit: Lieber gleich leer lassen, sonst ist es eigentlich nicht mehr leer, oder doch? 😃 😉

    "Leer oder voll", das ist hier die Frage. 😃


Anmelden zum Antworten