Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Re: A short-but-bizarre program that shouldn't work but does.

Reply
Thread Tools

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

 
 
Heinrich Wolf
Guest
Posts: n/a
 
      04-29-2012
Hi,

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

Heiner

 
Reply With Quote
 
 
 
 
Heinrich Wolf
Guest
Posts: n/a
 
      04-29-2012
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[])

 
Reply With Quote
 
 
 
 
Heinrich Wolf
Guest
Posts: n/a
 
      04-29-2012

"Heinrich Wolf" <(E-Mail Removed)> schrieb im Newsbeitrag
news:jnj143$qu1$(E-Mail Removed)-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.

 
Reply With Quote
 
Heinrich Wolf
Guest
Posts: n/a
 
      04-29-2012
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.
....

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
problem in running a basic code in python 3.3.0 that includes HTML file Satabdi Mukherjee Python 1 04-04-2013 07:48 PM
JNI program work with 32bit but not 64bit JVM on jdk 1.6 & aix 5.3 TsanChung Java 7 09-18-2008 12:47 PM
Want to control jdb inside java program with stdout but won't work Ron Java 0 11-15-2005 01:41 AM
Python Program runs but itself but does not run under IDLE Ollie Python 0 10-02-2003 04:05 PM



Advertisments