विभिन्न प्रकार के व्यवहार के बीच स्विच करने के लिए विकास के दौरान #ifdef का उपयोग करना एक अच्छा अभ्यास है? उदाहरण के लिए, मैं मौजूदा कोड के व्यवहार को बदलना चाहता हूं, मेरे पास कई विचार हैं कि व्यवहार को कैसे बदलना है और विभिन्न दृष्टिकोणों का परीक्षण करने और तुलना करने के लिए विभिन्न कार्यान्वयनों के बीच स्विच करना आवश्यक है। आमतौर पर कोड में परिवर्तन जटिल होते हैं और विभिन्न फाइलों में अलग-अलग तरीकों पर प्रभाव डालते हैं।
मैं आमतौर पर कई पहचानकर्ताओं का परिचय देता हूं और कुछ ऐसा करता हूं
void foo()
{
doSomething1();
#ifdef APPROACH1
foo_approach1();
#endif
doSomething2();
#ifdef APPROACH2
foo_approach2();
#endif
}
void bar()
{
doSomething3();
#ifndef APPROACH3
doSomething4();
#endif
doSomething5();
#ifdef APPROACH2
bar_approach2();
#endif
}
int main()
{
foo();
bar();
return 0;
}
यह अलग-अलग दृष्टिकोणों के बीच जल्दी से स्विच करने और स्रोत कोड की केवल एक प्रति में सब कुछ करने की अनुमति देता है। क्या यह विकास के लिए एक अच्छा तरीका है या बेहतर अभ्यास है?
#ifdef
ब्लॉक बंद होने पर कुछ IDE ब्लॉक का कुछ भी मूल्यांकन नहीं करते हैं । हम उन मामलों में भाग गए जहां कोड आसानी से बासी हो सकता है और यदि आप सभी मार्गों को नियमित रूप से नहीं बनाते हैं तो संकलन नहीं कर सकते हैं।
#ifdefs
कम बोझिल बनाने के कुछ तरीके देता है ।