GCC Warnungen für einige Zeilen Code deaktivieren



  • Nathan schrieb:

    Schreib dir abbreviations.

    Meinst du in CodeBlocks? Ja, aber ich will ja dass es im CODE kürzer wird. Das C&P ist ja kein Problem.



  • Ja, meinte ich.
    Ach so.



  • #include "qt_pushwarning.h"
    
    // ....
    
    #include "qt_popwwarning.h"
    

    😕



  • Sone schrieb:

    Ja, aber ich will ja dass es im CODE kürzer wird. Das C&P ist ja kein Problem.



  • Ich ging jetzt davon aus, er meint den Code, den er damit instruieren möchte, nicht den Code, den man dort nicht sieht.



  • Es gibt für GCC das _Pragma builtin, später zu einem #pragma expandiert.

    #define DO_PRAGMA_(a)               _Pragma(a)
    #define DO_PRAGMA(a)                DO_PRAGMA_(#a)
    #define DIAGNOSTIC_PUSH_1(a)        DO_PRAGMA(GCC diagnostic push a)
    #define DIAGNOSTIC_PUSH_2(a,...)    DIAGNOSTIC_PUSH_1(a) DIAGNOSTIC_PUSH_1(__VA_ARGS__)
    #define DIAGNOSTIC_PUSH_3(a,...)    DIAGNOSTIC_PUSH_1(a) DIAGNOSTIC_PUSH_2(__VA_ARGS__)
    #define DIAGNOSTIC_PUSH_4(a,...)    DIAGNOSTIC_PUSH_1(a) DIAGNOSTIC_PUSH_3(__VA_ARGS__)
    #define DIAGNOSTIC_PUSH_5(a,...)    DIAGNOSTIC_PUSH_1(a) DIAGNOSTIC_PUSH_4(__VA_ARGS__)
    
    #define NUM_ARGS2(X,X5,X4,X3,X2,X1,N,...) N
    #define NUM_ARGS(...) NUM_ARGS2(0, __VA_ARGS__ ,5,4,3,2,1,0)
    
    #define DIAGNOSTIC_PUSH_N3(M, ...)  M (__VA_ARGS__)
    #define DIAGNOSTIC_PUSH_N2(N, ...)  DIAGNOSTIC_PUSH_N3(DIAGNOSTIC_PUSH_ ## N, __VA_ARGS__)
    #define DIAGNOSTIC_PUSH_N(N, ...)   DIAGNOSTIC_PUSH_N2(N, __VA_ARGS__)
    
    #define DiagnosticPush(...)                                 \
      _Pragma("GCC diagnostic push")                            \
      DIAGNOSTIC_PUSH_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__)
    #define DiagnosticPop()                         \
      _Pragma("GCC diagnostic pop")
    
    DiagnosticPush("-Wall", "-Wextra", "-Wmissing-field-initializers", "-Wunused-parameter", "-Wunused-but-set-parameter")
    
    void f();
    
    DiagnosticPop()
    

    Das ganze ist variadisch (bis zu 5 Parameter), d.h.

    DiagnosticPush("-Wall", "-Wextra", "-Weffc++")
    

    geht genauso.



  • Ja, instruierer, das ist toll, vielen Dank! 👍 #
    Habs ein 'wenig' abgeändert und hinzugefügt.



  • Öhm, es gibt doch einen ganz einfachen Schalter, der GCC dazu bringt, Warnungen für Systemheader nicht anzuzeigen. Ist das nicht sogar default? Oder hast du die Qt-/Ogre-Header zu deinem Code kopiert?



  • Ansonsten:

    GCC-Manual schrieb:

    The -isystem command line option adds its argument to the list of directories to search for headers, just like -I. Any headers found in that directory will be considered system headers.



  • Gerade erst entdeckt, c-plusplus.net ist wohl ein wenig verbuggt was die anzeige von "ungelesene Nachrichten" angeht...

    Das ist auch super! Vielen Dank! Seh' ich mir an.



  • Ja, das macht es für CodeBlocks wunderbar leicht:

    Mit dem neuesten Nightly folgendes machen:
    Settings ➡ Compiler ➡ Entsprechenden Compiler auswählen ➡ Other Settings (der Reiter ganz Rechts) ➡ Advanced Options ➡ Others ➡ "Add header files search path (e.g. -I):" zu -isystem ändern

    👍


Anmelden zum Antworten