eigenartige Syntax



  • void Funktionsname ( Param1, Param2 ) unsigned char test[16];
    {
      // ...
    }
    

    kann mir jemand erklären, wieso das "unsigned char test[16]" hinter der parameterliste steht? danke



  • void Funktionsname ( Param1, Param2 ) unsigned char test[16];
    {
      // ...
    }
    

    Das das kompilierbar ist, kann ich mir nicht vorstellen.

    Möglich wäre

    void Funktionsname(test)
    unsigned char test[16];
    {
      ...
    }
    

    Dabei handelt sich es um eine Funktionsdefinition im alten Kernighan/Richie-C.

    Ob das von den heutigen Compilern noch unterstützt wird, ist fraglich.
    Auf jeden Fall nicht mehr in C++



  • ja genau wie du es korrigiert hast, so meine ich es! 🙂

    und was bedeutet die 2. zeile nun? danke!



  • In diesem, veralteten, C wurden die Typen nicht mit in die Klammerliste
    geschrieben, sondern nur die Parameter-Namen.

    Hinter der schließenden runden Klammer und vor der öffnenden geschweiften,
    mußten dann die Parameter mit ihren zugehörigen Typen wiederholt werden.

    Die main-Routine hieß damals so:

    [cpp]
    int main(argc, argv, envp)
    int argc;
    char *argv;
    char **envp;
    {
    ...
    }

    Dies geschah aus dem Grund da damals der Code so klein wie möglich sein
    sollte und man sich die Typangabe schenken wollte. Wurde nämlich kein
    Typ angegeben, ging der C-Compiler einfach davon aus daß es sich um
    ein integer handelt.

    Da integer auf Unix-Kisten schon immer 4 Byte lang war, auf MS-Dosen jedoch
    nur 2 Bytes, wurden char* auch nicht deklariert und einfach als int angenommen
    wurde.



  • Cool! DANKESCHÖN!!!! Hat mir sehr geholfen. 🙂


Anmelden zum Antworten