संभव डुप्लिकेट:
Why are there sometimes meaningless do/while and if/else statements in C/C++ macros?करना है, जबकि (गलत) पैटर्न
do while(false)
नीचे मैक्रो में आवश्यक क्यों है?
#define LOG(message, ...) \
do { \
Lock<MutualExclusion> lock (logMutex); \
.... a lot of code ...
} while (false)
मुझे नहीं लगता कि यह किसी भी कार्यात्मक उद्देश्य की सेवा करता है। क्या मैं कुछ देख रहा हूँ?
मैक्रोज़ का सकल दुरुपयोग। –
@ राफ: बेशक, मैक्रोज़ शुरू करने के लिए बहुत सकल हैं। –
'सी' मैक्रोज़ में बहुत उपयोगी हैं। मैं वर्तमान में जेनेरिक कंटेनरों के लिए मैक्रोज़ का उपयोग कर रहा हूं। 'सी ++' में आपके पास टेम्पलेट्स हैं, आप भाग्यशाली बास्टर्ड ;-) – gruszczy