मुझे लगता है कि आप में से अधिकांश ने सी/सी ++ के साथ काम किया है, इस बारे में अंतर्ज्ञान है कि प्रीप्रोसेसर कैसे काम करता है (अधिक या कम)। मैंने आज तक ऐसा सोचा, लेकिन मेरा अंतर्ज्ञान गलत साबित हुआ। यहां कहानी है:(अजीब?) जीसीसी प्रीप्रोसेसर व्यवहार
आज मैंने कुछ करने की कोशिश की, लेकिन मैं परिणाम की व्याख्या नहीं कर सकता।
#define A B
#define B A
A
B
क्या होता है: पहले निम्नलिखित कोड पर विचार? खैर, ई फ़्लैग से संकलन के बाद परिणाम यह है:
A
B
ठीक है, ठीक है, शायद नहीं क्या किसी को भी उम्मीद होती है, लेकिन यह समझाने के योग्य है। मुझे लगता है कि प्रीप्रोसेसर किसी भी तरह से पता चला कि कुछ समस्या है, और नहीं किया। , Unexplainable परिणाम मेरे लिए
#define A B
#define B A C
#define C x
A
B
अब करने के लिए,:
A x
B x
यह कैसे हुआ
अगली बात मैंने कोशिश की यह था? मैं यह कैसे हुआ यह किसी भी उचित तरीके से पता नहीं लगा सकता। पहला आदेश (#define ए बी) निष्पादित नहीं किया जा सकता है, क्योंकि तब ए को बी द्वारा प्रतिस्थापित किया जाएगा, और अंतिम परिणाम दोनों के लिए समान होना चाहिए। लेकिन अगर ऐसा नहीं है, तो कोई रास्ता नहीं है कि "ए एक्स" हो सकता है!
मेरा प्रश्न: मुझे क्या याद आ रही है? जाहिर है, मैं प्रीप्रोसेसर कैसे काम करता है इसका सही तरीका नहीं जानता। क्या आप इसके बारे में कोई स्रोत जानते हैं?
और यही कारण है कि # डिफाइन से बचने की आवश्यकता है ... – Goz
हाँ, यह एक और कारण है .. ऐसा नहीं है कि मेरा मतलब है कि उनका उपयोग न करें। कुछ कार्यों के लिए वे बहुत उपयोगी हैं (और i.m.o. जाने का तरीका)। – George