समस्या यह है कि एक ऐसे नाम के साथ #if निर्देश का उपयोग करना जो अनिर्धारित कार्य करता है जैसे कि इसे 0 के रूप में परिभाषित किया गया है। इसे पहले हमेशा #ifdef कर से बचा जा सकता है, लेकिन यह बोझिल और त्रुटि दोनों प्रवण है।
नेमस्पेस और नेमस्पेस एलियासिंग का उपयोग करने का थोड़ा बेहतर तरीका है।
जैसे
namespace AppA {
//application A specific
}
namespace AppB {
//application B specific
}
और नेमस्पेस एलियासिंग करने के लिए आपको app_defines.h का उपयोग करें
#if compiler_option_for_appA
namespace Application = AppA;
#elif compiler_option_for_appB
namespace Application = AppB;
#endif
या, यदि अधिक जटिल संयोजन, नामस्थान घोंसला
namespace Application
{
#if compiler_option_for_appA
using namespace AppA;
#elif compiler_option_for_appB
using namespace AppB;
#endif
}
या उपर्युक्त का कोई संयोजन।
लाभ यह है कि जब आप हेडर भूल जाते हैं तो आपको अपने कंपाइलर i.s.o से अज्ञात नेमस्पेस त्रुटियां मिलेंगी। चुपचाप असफल होने के कारण आवेदन 0 को डिफॉल्ट किया गया है।
ऐसा कहा जा रहा है कि, मैं इसी तरह की स्थिति में रहा हूं, मैंने कई पुस्तकालयों में सब कुछ दोबारा करने का फैसला किया, जिसमें से अधिकांश बहुमत साझा किया गया था, और संस्करण नियंत्रण प्रणाली को विभिन्न अनुप्रयोगों में जहां कहीं भी जाता है, को संभालने दें। कोड में परिभाषित आदि पर भरोसा करते हैं।
यह मेरे opionon में थोड़ा बेहतर काम करता है, लेकिन मुझे पता है कि बहुत ही अनुप्रयोग विशिष्ट, वाईएमएमवी होता है।