GCC Warnung dektivieren



  • Hoi 😉

    In meinem Projekt erbe ich von boost::iterator_facade, welches allerdings keinen virtuellen Destruktor hat.

    Das produziert dutzende Warnungen.
    Wie könnte ich die Warnung unterdrücken?

    warning: base class ‘class boost::iterator_facade<Ethon::MemoryRegionIterator, Ethon::MemoryRegion, boost::forward_traversal_tag, Ethon::MemoryRegion&, long int>’ has a non-virtual destructor

    Grüße,
    Ethon



  • Vermutlich könnte man diese Warnungen mit -Wno-non-virtual-dtor abschalten, aus http://gcc.gnu.org/onlinedocs/gcc-4.5.2/gcc/C_002b_002b-Dialect-Options.html#C_002b_002b-Dialect-Options :

    -Wnon-virtual-dtor (C++ and Objective-C++ only)
    Warn when a class has virtual functions and accessible non-virtual destructor, in which case it would be possible but unsafe to delete an instance of a derived class through a pointer to the base class. This warning is also enabled if -Weffc++ is specified.



  • Danke für die Antwort 😉

    Hab es probiert, klappt so nicht 😕
    Außerdem wäre es mir lieber, die Warnung nur in meinen Fällen zu deaktivieren ... in anderen Fällen kann sie ja durchaus berechtigt sein.
    Also, als #pragma oä. Hab dazu aber nichts gefunden.



  • Nicht erben ...



  • Was aber der Sinn von boost::iterator_facade ist ...



  • @Ethon: Kannst du uns bitte die komplette Zeile mit dem Aufruf von g++ mit allen Parametern "copypasten"? 🙂



  • Ich benutze Code:Blocks.

    Aber hier sind alle flags enthalten:

    <Build>
    <Target title="Debug">
    <Option output="bin/Debug/lml" prefix_auto="1" extension_auto="1" />
    <Option object_output="obj/Debug/" />
    <Option type="1" />
    <Option compiler="gcc" />
    <Compiler>
    <Add option="-g" />
    </Compiler>
    </Target>
    <Target title="Release">
    <Option output="bin/Release/lml" prefix_auto="1" extension_auto="1" />
    <Option object_output="obj/Release/" />
    <Option type="1" />
    <Option compiler="gcc" />
    <Compiler>
    <Add option="-fexpensive-optimizations" />
    <Add option="-O3" />
    </Compiler>
    </Target>
    </Build>
    <Compiler>
    <Add option="-Wmain" />
    <Add option="-pedantic" />
    <Add option="-W" />
    <Add option="-Wall" />
    <Add option="-Weffc++" />
    <Add option="-std=c++0x" />
    <Add option="-Wextra" />
    <Add option="-fexceptions" />
    </Compiler>
    <Linker>
    <Add library="boost_system" />
    <Add library="boost_filesystem" />
    </Linker>



  • Ethon schrieb:

    Add option="-Weffc++"

    Aha, vermutlich aktiviert diese Option deine Warnungen. Wenn du sie weglässt oder mit -Wno-effc++ ersetzt o.ä. sollte es keine Warnungen mehr geben.



  • Danke 😉


Anmelden zum Antworten