Macro-List-Trick

Aus Wiki
Version vom 20. Juni 2016, 12:48 Uhr von Claas (Diskussion | Beiträge) (Init)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Spare unnötige Code-Duplikationen bei Strings die identisch sind mit Variablennamen.

   #include <iostream>
    
   #define MEMBER_LIST(OP) \
       OP(Doc)             \
       OP(Grumpy)          \
       OP(Happy)           \
       OP(Sleepy)          \
       OP(Bashful)         \
       OP(Sneezy)          \
       OP(Dopey)
    
   int main(int argc, const char * argv[])
   {
     // string Doc = "Doc"; ...
     #define CREATE_STRING(name) std::string name = #name;
       MEMBER_LIST(CREATE_STRING)
     #undef CREATE_STRING
    
     #define LOG_STRING(name) std::cout << "string " << #name << " = \"" << name << "\"" << std::endl;
       MEMBER_LIST(LOG_STRING)
     #undef LOG_STRING
    
       return 0;
   }