Tool zum Filtern Sourcecode nach Präprozessor #if ?



  • Hallo,

    in einem zu pflegenden Sourcecode finde sich oft Abschnitte wie folgender:

    #define OS_Unix 10
    #define OS_Win 20
    #define BigEndian 1
    #define LittleEndian 2
    
    #define UsedOS OS_Win
    #define UsedEndian BigEndian
    
    #if (UsedOS == OS_Win)
      code a
    
      #if (UsedEndian != BigEndian)
        code b
      #endif
    
      #else
        code c
      #endif
    #endif
    
    #else
      code d
    #endif
    

    Innerhalb des Sourcecodes weden die #defines an zig Stellen abgefragt, of auch verschachtelt oder mitten in einer c-if Abfgage. Das macht den code kaum mehr lesbar.

    Daher bin ich auf der Suche nach einem Tool, dem mam sagen kann, welche Wert ein #define aktuell haben soll und das dann nur den dafür gültigen Sourcecode anzeigt bzw. in eine neue Datei kopiert.

    Habe schon erfahren, dass es u.a. ein tool namens 'scpp' ('selective C preprocessor') gibt, allerdings konnte ich keine .exe für Win OS finden.

    Hat hier evtl. jemand 'scpp' als exe vorliegen? Oder kennt Ihr andere Tools, welche den Sorcecode abhänig von vorgegebenen Präprozessor #if filtern können?

    Git es evtl. einen Editor, der das kann?

    Danke für jeden Tip!

    Gruß

    Thomas



  • Was mir zuerst in den Kopf kommt, ist einen normalen Compiler zu nutzen und gucken, ob es eine Möglichkeit gibt das Ergebniss des preprocessing auszugeben.

    gcc scheint das mit der Option -E (nur preprocessing) zu können. Mehr Infos: http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html



  • Visual Stuido 2005 und 2008 bietet ein Feature, dass alle Abschnitte, die in einem deaktivierten Präprozessorblock liegen, ausgraut: Ein (über Google gefundenes) Beispiel

    IFAIK geht das auch in den Express Editions.


Anmelden zum Antworten