मैं कुछ स्रोत कोड पढ़ रहा हूं। एक लंबे समय से लंबी स्ट्रिंग है कि एक समारोह के रूप में कार्य करता है परिभाषित करने के लिएफ़ंक्शन को परिभाषित करने के लिए कीवर्ड को परिभाषित करने का उपयोग क्यों करें
#define DO_BINOP(FN_NAME,TFLAG,OPER) \
void FN_NAME (bigint_stack &stack) { \
bigint right = stack.front(); \
stack.pop_front(); \
TRACE (TFLAG, "right = " << right); \
bigint left = stack.front(); \
stack.pop_front(); \
TRACE (TFLAG, "left = " << left); \
bigint result = left OPER (right); \
TRACE (TFLAG, "result = " << result); \
stack.push_front (result); \
}
DO_BINOP(do_add, '+', + )
वे define
का उपयोग करें: और न केवल इस स्रोत कोड, लेकिन यह भी कई अन्य लोगों, प्रोग्रामिंग इस तरह का उपयोग करें। मुझे नहीं पता कि ऐसा करने का क्या फायदा है, क्योंकि इस तरह से कार्यक्रम को पढ़ने में कठिनाई होती है, और डीबग करना कठिन होता है। मैं सी के लिए नया हूँ, इसलिए मुझे लगता है कि इस तरह से कुछ लाभ होना चाहिए, है ना?
धन्यवाद।
इस तरह वे कई कार्यों को परिभाषित कर सकते हैं जो प्रत्येक उदाहरण के लिए केवल एक मैक्रो आमंत्रण का उपयोग करके नाम और ऑपरेशन से भिन्न होते हैं। –
@MadScienceDreams मैक्रो * परिभाषित करता है * एक फ़ंक्शन परिभाषित करता है (अभिव्यक्ति में विस्तार करने के बजाय, एक गरीब व्यक्ति के कार्य के रूप में) ताकि इस मामले में कोई इनलाइनिंग-संबंधित कारण न हो। – delnan