के बीच अंतर मैं अपने प्रोग्राम को संकलित कर रहा हूं जो लिनक्स जीसीसी 4.4.1 सी 99 पर चल रहा है।#if परिभाषित (WIN32) और #ifdef (WIN32)
मैं सिर्फ # डिफाईन्स को उस कोड को अलग करने के लिए डाल रहा था जिसे विंडोज या लिनक्स पर संकलित किया जाएगा। हालांकि, मुझे यह त्रुटि मिली।
error: macro names must be identifiers.
इस कोड
#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
हालांकि, जब मैं इस के लिए बदल त्रुटि तय किया गया था का उपयोग करना:
#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
मैं बस सोच रहा था क्यों मुझे लगता है कि त्रुटि मिली और क्यों #defines अलग है?
बहुत धन्यवाद,
हाँ, लेकिन आप यह भी #ifndef WIN32 साथ यूनिक्स #ifdef कैस्केड, और एक ही लचीलापन मिल सकता है (के रूप में पढ़ा नहीं जा सकता, मैं मानता हूँ) – jpinto3912
@ jpinto3912 लेकिन अगर केवल वे सिर्फ था कि यहां तक कि के साथ '' || – Aidiakapi
hairier हो जाता है शुरुआत से '#if परिभाषित (NAME)' के साथ चला गया और '# ifdef' कथन बनाने से बचा। – Andy