Parameterdefinition einer Funktion



  • Hallo zusammen,

    beim lesen von Code der ZLib bin ich auf folgende Schreibweise der Funktionsköpfe gestoßen.

    int ZEXPORT inflateSync(z)
    z_streamp z;
    {
        // ... 
    }
    

    in einem Header ist die Methode folgerndermaßen deklariert:

    #ifndef OF /* function prototypes */
    #  ifdef STDC
    #    define OF(args)  args
    #  else
    #    define OF(args)  ()
    #  endif
    #endif
    //...
    ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
                                                 const Bytef *dictionary,
                                                 uInt  dictLength));
    //...
    

    Kann mir jemand erklären warum man so etwas macht?

    Gruß
    Sascha


  • Mod

    Das ist für gaaaaaaaaaaaaanz alte C-Compiler. Vor 30 Jahren gab es teilweise noch Compiler, die keine Funktionsprotoypen kannten. Und zur Definition der Parameter einer Funktion gab es damals auch noch teilweise einen anderen Stil, den du im ersten Codebeispiel siehst.

    Wahrscheinlich wurde der gezeigte Code irgendwann in den späten 1980ern oder 1990ern geschrieben, als man auf so etwas noch Rücksicht nehmen musste. Seither gab es wohl keinen Grund, den Code zu ändern.



  • Okay. Vielen Dank 👍 👍 👍

    Gruß
    Sascha


Log in to reply