Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Ex. in C/C++ auch alternative 'main'-Funktion, die ...

Mdl / 9 Antworten / Flachansicht Nickles

Ex. in C/C++ auch alternative 'main'-Funktion, die ...

... die Argumente, die dem Programm von der Konsole übergeben werden NICHT interpretiert?

Eine C/C++ Hauptfunktion sieht ja in der Regel in etwa so aus:

int main(int argc, char *argv[]);

Angenommen, ich rufe von der Konsole mein Programm MyPrg.exe wie folgt auf

myprg.exe  Hello      World

so landet die Programmausführung irgendwann bei obiger main()-Funktion und die Werte sind

  argc==3

  argv[0]==myprg.exe, argv[1]="Hello" und argv[2]="World"

Ich kann also mit main() nicht ermitteln, wieviele Leerzeichen zwischen Hello und World stehen. Das könnte irgendeine vorgeschaltete Instanz.

Gibt es vielleicht doch eine Möglichkeit? Wird die gesamte Aufrufsequenz vielleicht in einer main()-vorgeschalteten Funktion innerhalb C/C++ komplett als ein Argument "myprg.exe  Hello      World' übergeben? Ich meine, ich hätte so ewas vor langer Zeit mal gelesen.

Wenn diese Interpretation bereits von der Konsole komplett interpretiert würde, würde es gar keine Möglichkeit geben den ECHO-Befehl als C-Prg. zu realisieren.Vielleicht gibt es die auch gar nicht - ECHO ist ja ein interner Befehl (d.h. es gibt kein ECHO.EXE) . Vielleicht ja aber doch...

Viele Grüße,

Mdl

P.S. Ich benutze den Embarcadero's C++Builder

bei Antwort benachrichtigen
Borlander Mdl „Hatte ich fast befürchtet/vermutet. Schön wäre ...“
Optionen
dieses (ansich ja sinnvolle) Verhalten kurzzeitig zu deaktivieren (und nach dem Prg.aufruf) erneut wieder zu aktivieren?

Ich vermute, dass das mit dem Standardinterpreter von Windows nicht möglich ist. Ggf. mit einer Alternative.

Wenn man aber - wie ich in letzter Zeit - viele sich gegenseitig aufrufende Batchfiles hat, ist das dann doch nicht so einfach.

Das sehe ich nun nicht so kritisch. Zumal es generell empfehlenswert ist Parameter mit variablem Inhalt in Anführungszeichen zu übergeben.

bei Antwort benachrichtigen