[Qt] signals MAKRO stört



  • Hello!

    Folgendes Problem:
    Qt nutzt ja bekanntlich signals/slots und selbige wörtchen sind ebenso MAKROS..
    (hab ich recht?)

    Leider gibt es jetzt mindestens eine Funktion die sich signals() nennt ....

    Bin ich nun auf die große Qt Schwäche gestoßen von der alle reden? 🙄

    Das ist nicht irgendwie umgehbar oder?



  • Also die signals() ist von mir und ich möchte sie wirklich <b>äußerst</b> ungern umbenennen ....



  • Was für ein signal-makro? 😕 😕



  • Die3? schrieb:

    Was für ein signal-makro? 😕 😕

    Na das: 🙄

    class obj : public QObject
    {
         Q_OBJECT
    
    signals:   // <- DAAAS!!  :p 
      /* ... */
    
    public slots:
     /* ... */
    };
    

    verträgt sich nicht mit

    class irgendwas
    {
         float signals() const; // <- DAAAS!! :p
    };
    

    roger? 😃



  • Aha, also du verwendest den bezeichner eines DEFINEs irgendwo in deinem code in anderem context? Und das soll die grosse Qt schwäche sein, von der alle reden? Ne, wohl eher nicht, denn das problem hast du überall wo fremder code ein define benutzt welches etwas allgemeiner gehalten ist.

    Qt doku lesen hilft da btw auch manchmal.

    Note that other libraries that define variables called signals or slots may cause compiler warnings and errors when compiled alongside a Qt-based application. To solve this problem, #undef the offending preprocessor symbol.



  • JtR schrieb:

    Bin ich nun auf die große Qt Schwäche gestoßen von der alle reden? 🙄

    Hältst du es auch für die große Schwäche der Programmiersprache C++, dass man keine Funktion schreiben kann die beispielsweise "new" heißt? 🙄

    void new()
    {
    }
    

    Da lässt sich leider nichts dran ändern, irgendwelche Schlüsselwörter muss man schließlich definieren.
    Wenn du trotzdem unbedingt eine Funktion namens "new" schreiben wolltest, müsstest du halt z.B. einen C Compiler verwenden, da C noch kein new kennt und es deswegen klappt. 😉

    Selbiges betrifft Qt! Wenn du unbedingt eine Funktion haben willst, die allerdings schon ein Schlüsselwort/Präprozessor von Qt ist, musst du eben auf Qt verzichten.

    Entweder komplett, indem du die gesamte Bibliothek garnicht erst verwendest, oder aber indem du fundamentale Bestandteile von ihr vernichtest, was in deinem Fall ein

    #undef signals
    

    wäre.

    So oder so, am schlauesten wäre es einfach deine verdammte Funktion umzubennen, das kann doch nicht so schwer sein. 😃



  • [quote="JtR"]Hello!

    Folgendes Problem:
    Qt nutzt ja bekanntlich signals/slots und selbige wörtchen sind ebenso MAKROS..
    (hab ich recht?)

    Leider gibt es jetzt mindestens eine Funktion die sich signals() nennt ....

    Bin ich nun auf die große Qt Schwäche gestoßen von der alle reden? 🙄

    Das ist nicht irgendwie umgehbar oder?[/quote]

    Doch. Definiere das Makro QT_NO_KEYWORDS beim uebersetzen, und "signals"
    wird kein Makro sein. Die Funktionalitaet bekommst Du immer noch, wenn
    Du anstelle von "signals" "Q_SIGNALS" benutzt.


Anmelden zum Antworten