इस c
कार्यक्रम मेंक्या यह #if के लिए अपरिभाषित प्रतीकात्मक स्थिरांक 0 के रूप में मानने के लिए मानक है?
#include<stdio.h>
int main()
{
#if UnDefinedSymbolicConstant==0
printf("UnDefinedSymbolicConstant is equal to 0\n ");
#else
printf("UnDefinedSymbolicConstant is not equal to 0\n");
#endif
return 0;
}
UnDefinedSymbolicConstant#define
कहीं भी नहीं किया गया है, अभी भी यह के रूप में ग्रहण किया जा रहा है और output on gcc-4.3.4
के रूप में देता है: इस
UnDefinedSymbolicConstant is equal to 0
हां, तो है मानक व्यवहार या यह केवल जीसीसी में इस तरह काम करता है?
यह पता लगाने का एक अच्छा तरीका है कि कुछ मानक है या नहीं है -std = c99 -pedantic। यह सभी जीसीसी एक्सटेंशन अक्षम करना चाहिए। उनके बिना, जीसीसी मानक के बजाय अच्छी तरह से अनुरूप है। – Lundin
क्या आप सुनिश्चित हैं कि '-std = c99 -pedantic' सभी गैर मानक संरचनाओं को पकड़ता है? ऐसा लगता है कि, लेकिन अगर मैं गलत नहीं हूं, तो यह अभी भी कुछ याद करता है। असल में आप '-std = c99' पर भरोसा कर सकते हैं, उन चीजों को अनुमति देने से बचें जो मानक-निर्दिष्ट व्यवहार के साथ संघर्ष करते हैं, लेकिन यह आपको उन चीजों को करने से नहीं रोकता है जो संघर्ष नहीं करते हैं लेकिन इन्हें निर्दिष्ट नहीं किया जाता है मानक। '-pedantic' का इरादा आपको बाद के बारे में चेतावनी देना है, लेकिन मुझे पूरा विश्वास नहीं है कि यह पूरा हो गया है। –