Überprüfen ob eine Variabel exestiert



  • Hallo,

    Ich müsste herausfinden, ob eine Variabel schon exestiert (schon deklariert wurde).

    Fällt jemandem etwas ein wie mann das machen könnte?



  • Den Code lesen?



  • Hallo,
    bist du sicher, dass du hier das Richtige meinst?

    Kannst du dein Problem vielleicht etwas genauer beschreiben?



  • Nachschauen ob der Include guard definiert wurde.



  • kompilieren,
    sollte es sie schon geben wird der compiler ja nen fehler ausspucken 😕



  • k1ro schrieb:

    kompilieren,
    sollte es sie schon geben wird der compiler ja nen fehler ausspucken 😕

    Warum sollte er? Der Op sprach von Deklarationen, nicht von Definitionen. Erstere dürfen ruhig mehrfach auftreten.

    Das:

    int i;
    int main()
    {
    extern int i;
    extern int i;
    extern int i;
    
    }
    

    ist ein legales C++ Programm.



  • Ich müsste herausfinden, ob eine Variabel schon exestiert (schon deklariert wurde).

    Moment, existiert sie nicht erst durch ihre Definition?
    Aber bis auf Compilierungsfehler sehe ich auch keine Möglichkeit zu testen, ob eine Variable deklariert oder sogar definiert wurde. Wer soll diese Tests denn bitte durchführen? Immerhin müssen Sie vor dem Compilieren stattfinden.



  • jo sowas würd mich auch interessieren ..

    arbeite viel mit php und bin dadurch schon total verwöhnt .. auch dort hat man per if(isset(i)) die möglichkeit zu schauen ob die variable definiert wurde .. auch ein löschen der variable unset(i); zu jederzeit ist möglich.

    find das traurig das c soetwas nicht bietet.. man brauch sowas in php sehr oft und auch für das eine oder andere c projekt wäre es von vorteil .. wieso wird c eigentlich nicht weiterentwickelt? php ist ja ständig in der weiterentwicklung und bis auf sehr sehr minimale abweichungen komplett kompatibel nach unten.

    gleich ne frage anhängen..

    in php habe ich solch ein array:
    var[10][20]
    foreach ($var as $i => liste) { // das heisste, er übergibt bei jedem durchgang das zweite array [20] an liste .. so das man: if (liste[18]==0)
    {
    // ToDo:
    }

    // $i ist ein interner zeiger auf das erste array [10] .. geht somit von 0-9
    }

    sowas für c wäre nicht schlecht .. geht das irgendwie?
    ach wie ich mir wünsche würde das c bissle was von php hätte .. damit kann man so schöne sachen machen *grins*



  • @guest01234: hier geht es eigentlich um C++, nicht um C. Unabhängig davon:

    class UndefinedError ... ;
    
    template <typename T>
    class Optional {
    public:
       Optional ()
       {}
       Optional (T const & other, bool defined=true)
          : value_(other)
          , defined(defined)   
       {}
    
       void def ()
       {
         defined = true;
       }
       void undef ()
       {
         defined = false;
       }
       operator T & ()
       {
          if (defined_)
             return value_
          else
             throw UndefinedError;
       }
    private:
       T value_;
       bool defined;
    };
    

    Dann noch die ganzen Operatoren überladen. Und schon hast du dir was passendes selbst gebastelt

    void func (int x) {};
    
    Optional<int> foo(33);
    
    func (foo);
    
    foo.undef();
    
    func (foo);  // bang!
    


  • Da fällt mir ein: Boost hat sowas schon längst. boost::optional


Anmelden zum Antworten