Re: A short-but-bizarre program that shouldn't work but does.

Discussion in 'C Programming' started by Heinrich Wolf, Apr 29, 2012.

  1. Hi,

    my old Borland Turbo C 2.0 also compiles that program and that lists the
    environment correctly without error.

    Heiner
     
    Heinrich Wolf, Apr 29, 2012
    #1
    1. Advertising

  2. In the help of Borland C++ Builder 5 the third parameter env is documented.
    Here is the documentation. I am sorry that it is German.



    Drei Parameter (Argumente) werden von der Borland
    C++Builder-Programmstartroutine an main übergeben: argc, argv und env.

    argc ist eine Ganzzahl und gibt die Anzahl der an main übergebenen
    Kommandozeilenargumente an, einschließlich des Namens des ausführbaren
    Programms selbst.
    argv ist ein Array von Zeigern auf Strings (char *[]).

    - argv[0] ist der vollständige Pfadname des laufenden Programms.
    - argv[1] zeigt auf den ersten String nach dem Programmnamen, der in der
    Kommandozeile des Betriebssystems eingegeben wurde.
    - argv[2] zeigt auf den zweiten String, der nach dem Programmnamen
    eingegeben wurde.
    - argv[argc-1] zeigt auf das letzte an main übergebene Argument.
    - argv[argc] enthält NULL.

    env ist ebenfalls ein Array von Zeigern auf Strings. Jedes Element von env[]
    enthält einen String der Form ENVVAR=Wert.

    - ENVVAR ist der Name einer Umgebungsvariablen, wie etwa PATH oder COMSPEC.
    - Wert ist der Wert, auf den ENVVAR gesetzt ist, wie beispielsweise
    C:\APPS;C:\TOOLS; (für PATH) oder C:\DOS\COMMAND.COM (für COMSPEC).

    Bei der Deklaration dieser Parameter muß die exakte Reihenfolge eingehalten
    werden: argc, argv, env. So sind beispielsweise sämtliche folgenden
    Deklarationen von Argumenten zu main gültig:

    int main()
    int main(int argc) /* erlaubt, aber sehr ungewöhnlich */
    int main(int argc, char * argv[])
    int main(int argc, char * argv[], char * env[])]

    Die Deklaration int main(int argc) ist zulässig; es ist jedoch sehr
    ungewöhnlich, argc in einem Programm zu verwenden, ohne zugleich die
    Argumente von argv zu benutzen.

    Das Argument env ist auch über die globale Variable environ verfügbar.

    In allen Umgebungen sind argc und argv ebenfalls über die globalen Variablen
    _argc und _argv verfügbar.

    main mit einer Unicode-Anwendung

    Die Unicode-Version der Funktion main lautet:

    int wmain (int argc, wchar_t *argv[])

    Der Parameter argv (und optional der Parameter envp) unterstützt
    wide-character-Typen.

    Die folgende _tmain-Funktion ist ein Makro, das - abhängig von dem
    Anwendungstyp - auf die entsprechende main-Funktion expandiert wird.

    int _tmain (int argc, _TCHAR *argv[])
     
    Heinrich Wolf, Apr 29, 2012
    #2
    1. Advertising

  3. "Heinrich Wolf" <> schrieb im Newsbeitrag
    news:jnj143$qu1$-online.net...
    > Hi,
    >
    > my old Borland Turbo C 2.0 also compiles that program and that lists the
    > environment correctly without error.
    >
    > Heiner


    My manual of Borland Turbo C 2.0 also documents env as third parameter of
    main.
     
    Heinrich Wolf, Apr 29, 2012
    #3
  4. man gcc on my Fedora 14 Linux writes:

    ....
    -Wmain
    Warn if the type of main is suspicious. main should be a
    function with external linkage, returning int, taking either zero arguments,
    two, or
    three arguments of appropriate types. This warning is enabled by
    default in C++ and is enabled by either -Wall or -pedantic.
    ....
     
    Heinrich Wolf, Apr 29, 2012
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. David Geering

    longs, long longs, short short long ints . . . huh?!

    David Geering, Jan 8, 2007, in forum: C Programming
    Replies:
    15
    Views:
    560
    Keith Thompson
    Jan 11, 2007
  2. Replies:
    4
    Views:
    828
    Kaz Kylheku
    Oct 17, 2006
  3. Ioannis Vranos

    unsigned short, short literals

    Ioannis Vranos, Mar 4, 2008, in forum: C Programming
    Replies:
    5
    Views:
    681
    Eric Sosman
    Mar 5, 2008
  4. FishKeeper
    Replies:
    1
    Views:
    147
    Sanjay
    Feb 17, 2006
  5. Andre
    Replies:
    5
    Views:
    541
    Keith Thompson
    Jul 17, 2012
Loading...

Share This Page