[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" #endifnehmen (und bei #else ein #error setzen. So was kann einem Ärger sparen :))
-
alles klar! super tipp, danke!