Komische main int main(argc, argv, envp)int argc; char **argv, **envp;



  • Hi,

    ich habe mir den Quellcode zu Ruby runtergeladen und dort steht die main-Funktion so:

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

    Was hat es für einen Sinn das so zu schreiben und welcher Compiler übersetzt das überhaupt?

    mfg,
    hahahahaha



  • 1. Der Sinn ist vermutlich dass es zu der Zeit als das erdacht wurde noch keine ANSI-Syntax gab (..und ich dachte Ruby wäre relativ neu).
    2. Eigentlich übersetzt das jeder C-Compiler, der noch (und das sollten alle sein) K&R-Syntax erkennt.

    EDIT:
    3. Womit diese Frage eigentlich im falschen Forum steht, denn C++-Compiler übersetzen das mit Sicherheit nicht 😉



  • Ja stimmt mit einem C-Compiler kann man es übersetzen 🙂
    War das den früher vor dem ANSI standart so das man alle
    Funktionen so schrieb?



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • hahahahaha schrieb:

    War das den früher vor dem ANSI stan**** so das man alle
    Funktionen so schrieb?

    Ja, das ist die sog. K&R-Syntax - damals hat man es noch nicht so genau genommen mit der Typsicherheit 😉 (und die Schreibweise int func() int arg1,arg2;{...} sieht zwar ähnlich aus wie int func(int arg1,int arg2){...} , aber da kann der Compiler nicht überprüfen, ob die richtigen Argumente übergeben werden)


Anmelden zum Antworten