Compilerunabhängige Warning oder precompiler statement im precompiler macro



  • Hallo zusammen!

    Ich arbeite an einer multiplattformfähigen Anwendung und stelle mir gerade die Frage wie ich eine compilerunabhängige warning gebacken bekomme. Der Microsoftcompiler mag ja leider kein #warning.
    So hab ich mir das vorgestellt, aber so geht es halt mal leider gar nicht:

    #ifdef _WIN32
     #define NWARN(__x__)\
      #pragma warning "__x__"
    #else
     #define NWARN(__x__)\
      #warning "__x__"
    #endif
    

    Irgendwelche Ideen?

    Ciao
    Timo



  • Das geht gar nicht - der Präprozessor kann selber keine Präprozessor-Direktiven anlegen, also müsstest du noch einen Prä-Präprozessor davorschalten, der das anpasst.



  • Uih, schade, habs mir aber fast schon gedacht. Das heißt so ein Problem kann nicht gelöst werden?

    Ich sehe oft im Code Stellen die nochmal angepackt werden müssen, da finde ich warnings zur Compilezeit ganz praktisch. Wie machen das andere?
    Natürlich würde zur Not auch //TODO: <blabla> Kommentar gehen, gibt aber zur Compilezeit nichts aus und man ist auf entsprechende IDEs für alle Plattformen angewiesen, die so ne Art TODO-Liste generieren.

    Ciao
    Timo



  • derdasallesprogrammiert schrieb:

    Wie machen das andere?

    Entweder sie verwenden '//TODO:...' Kommentare oder sie beschränken sich auf einen Compiler und setzen Warnmeldungen so ein, daß DIESER sie versteht.



  • Gehts hier nur um Warnungen oder soll das Übersetzen abgebrochen werden bis der Mangel behoben wurde?

    Letzteres könntest du mit "static asserts" lösen und an die Stelle wo das assert steht schreibst du nen Kommentar wo erklärt wird warum es schief gegangen ist.



  • Außerdem besagt das Makro _WIN32 nicht, daß es sich um einen MS-Compiler handeln muß, sondern nur daß für Windows kompiliert wird (auch für Konsolenprogramme).

    Du müßtest dann jeweils den kompletten Präprozessor-Block hinschreiben, z.B.

    #ifdef _MSC_VER
      #pragma warning "Bla bla bla"
    #else
      #warning "Bla bla bla"
    #endif
    

    P.S. Deine Warnings würden immer __x__ ausgeben.
    Der richtige PP-Befehl dafür lautet: #__x__ (NICHT "__x__")



  • @Th: Ach so, ja, war nur Pseudocode. Genau solche Blöcke will ich im Code eigentlich nicht haben.

    @lolz: Es geht nur um Warnings.

    @CStoll: Okay, dann also doch //TODO Kommentare... 🙄

    Danke an alle!

    Ciao
    Timo


Log in to reply