Zugriff auf int argc, char * argv[] vor main

Diskutiere Zugriff auf int argc, char * argv[] vor main im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hi All, Ich habe eine Frage und bitte Euch um Hilfe. Ich moechte auf die Argumente von main zugreifen: class d { publc: d();...

  1. #1 franksa, 01.02.2005
    franksa

    franksa Grünschnabel

    Dabei seit:
    01.02.2005
    Beiträge:
    4
    Zustimmungen:
    0
    Hi All,
    Ich habe eine Frage und bitte Euch um Hilfe. Ich moechte auf die Argumente von main zugreifen:

    class d {
    publc:
    d();
    ~d();
    };

    d::d()
    {
    cerr << "argc:" << argc << endl;
    }
    d::~d()
    {
    }

    d st;

    main ( int argc, char *argv[] )
    {
    }

    Ich habe nicht einmal eine Idea unter welchem Stichwort ich da suchen muesste. Wo kann ich dazu eine Beschreibung finden.
    Vielen Dank und viele Gruesse, Frank
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Naja. Du muesstest vielleicht erstmal ein Objekt erstellen, die Argumente argc und argv uebrgeben und dann koenntest du darueber nachdenken die beiden dann vorhandenen Variablen ihrem Typ entsprechend auszugeben.
     
  4. #3 franksa, 01.02.2005
    franksa

    franksa Grünschnabel

    Dabei seit:
    01.02.2005
    Beiträge:
    4
    Zustimmungen:
    0
    Hi, erstmal Danke fuer Deine Antwort.
    Aber genau das ist es, ich muss vor dem Aufruf von main schon auf argc/argv zugreifen. Kann also nach main nichts mehr tun.
    Gruss, Frank
     
  5. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Naja. Was haellst du denn davon das Objekt erst in main() zu erstellen?
     
  6. hopfe

    hopfe Haudegen

    Dabei seit:
    01.04.2003
    Beiträge:
    733
    Zustimmungen:
    0
    Ort:
    Aachen
    Warum mußt du vor den Aufruf von Main schon was mit den Variablen machen?

    main() wird für normal als aller erstes aufgerufen, ich denke nicht das du eine Funktion davor setzten kannst.
     
  7. #6 franksa, 01.02.2005
    franksa

    franksa Grünschnabel

    Dabei seit:
    01.02.2005
    Beiträge:
    4
    Zustimmungen:
    0
    Hi,
    Vor dem Aufruf von main werden alle Konstructoren der globalen Klassen aufgerufen. Es wird also tatsaechlich ein Programmteil vor main aufgerufen. Meine globale Klasse muss nun etwas machen und dazu auf die argc/argv zugreifen.

    Viele Gruesse und vielen Dank fuer Eure Hilfe, Frank
     
  8. #7 h2owasser, 01.02.2005
    h2owasser

    h2owasser Sxe Power User

    Dabei seit:
    07.12.2002
    Beiträge:
    491
    Zustimmungen:
    0
    Warum nicht so wie etuli schon sagte?

    Code:
    #include <iostream>
    
    using namespace std;
    
    class d {
    
    public:
    d( int argc,char *argv[]);
    ~d();
    };
    
    d::d(int argc,char *argv[])
    {
    cout << "argc:" << argc << endl;
    }
    d::~d()
    {
    }
    main ( int argc, char *argv[] )
    {d st(argc,argv);}
    
     
  9. #8 franksa, 01.02.2005
    franksa

    franksa Grünschnabel

    Dabei seit:
    01.02.2005
    Beiträge:
    4
    Zustimmungen:
    0
    Hi,
    weil st dann erst instanziert wird wenn main schon aufgerufen wurde und main eine C-Funktion ist.
    Es ist schon klar, dass nach dem Aufruf von main alles machbar ist. Aber ich brauche das leider schon vor main.

    Wenn es also keine Funktion gibt, die nur der C++-Compiler irgentwie zur Verfuehgung stellt, die vor allem aufgerufen wird und argc/argv bekannt macht, dann geht das, was ist brauche nicht.

    Viele Gruesse, Frank
     
  10. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Welche Anwendung, braucht denn solche Konstrukte? Mir faellt keine ein.
     
  11. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    ich würd mal sagen dass was du machen willst nicht funktioniert.

    aber ich kann mir nicht vorstellen das du das nicht irgendwie anders lösen kannst, indem du nicht im konstruktor auf argv zugreifst.
    aber da ich keine ahnung habe was du konkret machen wilst - und vor allem warum! - kann ich dir keinen lösungsvorschlag anbieten.
     
  12. #11 ExRevel, 02.02.2005
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Ich möchte mich dem etuli da gerne anschliessen, welche Applikation benötigt denn aufrufe vor main() wobei es eh schnee ist. Die Konstruktoren werden doch auch nicht vor main aufgerufen? Wo wäre der Sinn? Ich meine wenn ich eine Klasse instanziere dann wird der Konstruktor aufgerufen, wie soll er vorher aufgerufen werden, oder warum? Wenn keine Instanz gefordert wird, dann brauch doch auch der Konstruktor nett aufgerufen werden! Der Compiler verarbeitet die Klassen vllt. vor der main() aber doch nicht im Programmablauf... wenn ich mich so unglaublich täuschen sollte, dann haette ich gerne einen schwarz auch weiss beweis mittels einer kompetenten website.

    Also meine Meinung, das wird sicher nicht funktionieren was du vor hast.

    ciao Exi
     
  13. panzi

    panzi Grünschnabel

    Dabei seit:
    09.08.2003
    Beiträge:
    9
    Zustimmungen:
    0
    Probiers doch aus! Konstruktoren global angelegter Objekte werden vor main() ausgeführt!
    Code:
    #include <iostream>
    
    class Foo {
    public:
       Foo() { std::cout << "Foo()" << std::endl; }
       virtual ~Foo() { std::cout << "~Foo()" << std::endl; }
    };
    
    Foo bar;
    
    int main() {
       std::cout << "main()" << std::endl;
       return 0;
    }
    Ausgabe:
    Code:
    Foo()
    main()
    ~Foo()
     
  14. #13 pinky, 03.02.2005
    Zuletzt bearbeitet: 03.02.2005
    pinky

    pinky König

    Dabei seit:
    11.08.2004
    Beiträge:
    795
    Zustimmungen:
    0
    Also ich muß ehrlich sagen, dass ich das Problem auch nicht verstehe.
    Denn selbst wenn man, wie panzi gezeigt hat, ein globales Objekt erzeugt. Dann passiert darin ja noch nichts "dynamisches". Der Programmablauf beginnt immer in main(), warum dann also nicht einfach in main foo die Argumente mitteilen?

    Also z.B.
    Code:
    int main(int argc, char* argv[]) {
       foo.setArgs(argv);
       return 0;
    }
    
    Ausserdem sind globale Objekte mind. genauso unschön wie globale Variablen
     
  15. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    kann pinky nur zustimmen - so würd ich das auch machen
     
  16. #15 ExRevel, 03.02.2005
    ExRevel

    ExRevel Routinier

    Dabei seit:
    16.02.2003
    Beiträge:
    430
    Zustimmungen:
    0
    Ort:
    Stuttgart
    Ok, habe ich wieder was gelernt an panzis beispiel, nur auf die Argumente des Programms wird man dennoch nicht zugreifen können?! :) Ich kann nur wieder die gleiche Frage stellen wie pinky, wär schön wenn sich franksa dazu mal äußern würde... ist einfach nur interesse wann man sowas brauchen könnte.

    ciao Exi
     
Thema: Zugriff auf int argc, char * argv[] vor main
Besucher kamen mit folgenden Suchen
  1. int argc char argv

    ,
  2. argv[]

Die Seite wird geladen...

Zugriff auf int argc, char * argv[] vor main - Ähnliche Themen

  1. Nach Upgrade von SLES 11 SP3 zu SLES 12 SP4 kein Zugriff von Windows mehr

    Nach Upgrade von SLES 11 SP3 zu SLES 12 SP4 kein Zugriff von Windows mehr: Ich habe hier einen Linux-Server, der Cifs-Mounts eines Windows-2008-Servers (nicht R2) über Samba weiterreicht. Der Windows-Server spricht (noch)...
  2. kein Zugriff auf Freigabe über IP Adresse

    kein Zugriff auf Freigabe über IP Adresse: Hallo zusammen, folgende Situation: Samba Domäne (Version 4.5.16-Debian) Alle Rechner sind in der gleichen Domäne Alle Rechner (Win7 und...
  3. SMB Zugriff auf Homeshare

    SMB Zugriff auf Homeshare: Hallo zusammen, Ich habe aktuell ein Problem beim erstellen einer Samba Freigabe und den Zugriff von einem Windows Client. Auf meinem Server...
  4. libcamera soll Zugriff auf komplexe Videokameras verbessern

    libcamera soll Zugriff auf komplexe Videokameras verbessern: Die zunehmende Komplexität von Videokameras macht es immer schwieriger, die vielen Einstellungen der V4L-Schnittstelle zu beherrschen. libcamera...
  5. Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

    Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich: Hallo, ich habe meinen Fileserver erneuern müssen, Umstellung auf 18.04. LTS! Ich habe eine Freigabe auf dem Fileserver A = FreigabeServer...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden