मुझे पता है कि इस कोड को दोनों सी और सी में मान्य है ++:मैक्रो परिभाषा और सी ++
#define FOO 0
#define FOO 0
आईएसओ/आईईसी 14882: 2011
16,3 मैक्रो प्रतिस्थापन [cpp.replace ]
2 वर्तमान में किसी ऑब्जेक्ट-जैसे मैक्रो के रूप में परिभाषित एक पहचानकर्ता किसी अन्य # परिभाषित प्रीप्रोकैसिंग निर्देश द्वारा पुन: परिभाषित किया जा सकता है बशर्ते सेकंड ऑनड परिभाषा एक ऑब्जेक्ट जैसी मैक्रो परिभाषा है और दो प्रतिस्थापन सूचियां समान हैं, अन्यथा कार्यक्रम खराब है। इसी तरह, एक पहचानकर्ता वर्तमान में एक समारोह की तरह मैक्रो के रूप में परिभाषित एक और #define पूर्व प्रसंस्करण प्रदान की है कि दूसरी परिभाषा एक समारोह की तरह मैक्रो परिभाषा एक ही नंबर और मानकों की वर्तनी है कि निर्देश के द्वारा नए सिरे से परिभाषित किया जा सकता है, और दो प्रतिस्थापन सूची समान हैं, अन्यथा कार्यक्रम खराब है।
लेकिन इस कोड के बारे में क्या?
#define FOO 0
#define FOO FOO
रिप्लेसमेंट सूचियों preprocessing (केवल जब पहली प्रतिस्थापन होता है) के शुरू में समान नहीं हैं।
यह मेरे लिए एक बुरा दृष्टिकोण जैसा लगता है। भावी डेवलपर्स द्वारा भ्रम और संभावित त्रुटियों का कारण बनने की संभावना है। –
@ जोनाथन वुड मैं इसे वास्तविक कोड में उपयोग नहीं करना चाहता, बस दिलचस्प पल – FrozenHeart