को देखते हुए:सी #Error निर्देश और टिप्पणियों
#error /*
*/ foo
माइक्रोसॉफ्ट सी ++ /*
और जीसीसी आउटपुट foo
की एक त्रुटि संदेश आउटपुट।
कौन सा सही है?
को देखते हुए:सी #Error निर्देश और टिप्पणियों
#error /*
*/ foo
माइक्रोसॉफ्ट सी ++ /*
और जीसीसी आउटपुट foo
की एक त्रुटि संदेश आउटपुट।
कौन सा सही है?
जीसीसी सही है।
टिप्पणियों का प्रतिस्थापन (लाइन ब्रेक समेत) अनुवाद चरण 3 में होता है, अनुवाद चरण 4 में पूर्व प्रसंस्करण (आईएसओ/आईईसी 98 99: 1 999, §5.1.1.2)।
इसलिए, कंपाइलर का प्रीप्रोकैसिंग हिस्सा अब लाइन-ब्रेक को "देख" नहीं देता है।
और, #error
इस तरह परिभाषित किया गया है (§6.10.5):
रूप
# error pp-tokens_opt new-line
के एक पूर्व प्रसंस्करण निर्देश कार्यान्वयन एक नैदानिक संदेश यह है कि शामिल हैं का उत्पादन करने का कारण बनता है preprocessing टोकन के अनुक्रम निर्दिष्ट।
तो, foo
आउटपुट का हिस्सा होना चाहिए।
जीसीसी सही है क्योंकि इसे मानक में एक ही स्थान / * ... * /
द्वारा प्रतिस्थापित किया जाना चाहिए।
"माइक्रोसॉफ्ट सी ++" एक सी संकलक है? –