GCC Warnung bei nicht benutzten Variablen



  • Ein Kollege von mir hat gerade folgendes Problem: Er legt ein Objekt auf den Stack an dass er nur benötigt weil der Konstruktor und Destriktor bestimmte notwendige dinge tun. Jetzt warnt der Compiler, weil die Variable nicht benutzt wird (was formal ja auch so ist). Kann man das irgendwie vermeiden? Warum warnt der Kompiler nicht z.B. bei der Verwendung eines std::lock_guard?



  • Kannst du den Code reduzieren? GCC sollte nur warnen, wenn es ein Objekt ist, dessen Konstruktor/Destruktor keine Effekte haben. Alles andere ist ein Compilerbug.



  • Was genau macht der Konstruktor? Bitte mal ausführen oder (besser) Code posten.


  • Mod

    TNA schrieb:

    Ein Kollege von mir hat gerade folgendes Problem: Er legt ein Objekt auf den Stack an dass er nur benötigt weil der Konstruktor und Destriktor bestimmte notwendige dinge tun. Jetzt warnt der Compiler, weil die Variable nicht benutzt wird (was formal ja auch so ist). Kann man das irgendwie vermeiden? Warum warnt der Kompiler nicht z.B. bei der Verwendung eines std::lock_guard?

    Bei mir warnt der Compiler nicht, wenn der verwendete Konstruktor nicht implizit definiert wurde.

    struct foo { foo() {} };
    struct bar { bar() = default; };
    
    int main()
    {
       foo a; // keine Warnung mit -Wall
       bar b; // Warnung mit -Wall
    }
    


  • Ich glaube ich muss da nochmal genauer nachfragen, aber das wird diese Woche nichts mehr. Danke schon mal für die Antworten.


Anmelden zum Antworten