[optische quellcode optimierung] macro oder typedef oder globale funktion?



  • {
      #ifdef A_SERIALIZATION
       if( Archive::is_loading::value )
      #elif B_SERIALIZATION
       if(ar.isRead()) 
      #endif
      {
          ...
      }
      else { ... }
    

    Wie kann man die #ifdef-Anweisungen am eleganstesten kapseln?

    if( Archiv.isReading() )
      {
          ...
      }
      else { ... }
    

    oder einfach eine globale methode erstellen in der dann die #ifdef-Anwesiung steht??

    template<Archive>
    bool isReading(const Archive& ar)
    {
      #ifdef A_SERIALIZATION
       return Archive::is_loading::value;
      #elif B_SERIALIZATION
       return ar.isRead(); 
      #endif
    }
    


  • muffmolch schrieb:

    template<Archive>
    bool isReading(const Archive& ar)
    {
      #ifdef A_SERIALIZATION
       return Archive::is_loading::value;
      #elif B_SERIALIZATION
       return ar.isRead(); 
      #endif
    }
    

    ungefähr so, nur würde ich der Übersicht halber eher

    #ifdef A_SERIALIZATION
    
    bool isReading(const ...) { ... }
    
    #elis B_SERIALIZATION
    
    bool isReading(...
    
    #else
    #error "Neither A nor B_Serialization"
    #endif
    

    nehmen (und bei #else ein #error setzen. So was kann einem Ärger sparen :))



  • alles klar! super tipp, danke!


Anmelden zum Antworten