2011-11-17 12 views
13

पर चोक करता है मैं पुराने कंपेलर को कुछ अपेक्षाकृत आधुनिक सी कोड पोर्ट करने की कोशिश कर रहा हूं।पुराना सी कंपाइलर #ifndef #define

इस संकलक (DICE), ऐसा लगता है, पहली हेडर फाइल और इस मुहावरे की पहली आवृत्ति पर chokes:

#ifndef SOMETHING 
#define SOMETHING 

... 

#endif /* SOMETHING */ 

इसके साथ शीर्षक में दूसरी पंक्ति पर मर जाता है: DCPP: "../../code/someheader.h" L:2 C:0 Error:39 Syntax Error

#define SOMETHING 1 में बदलना कोई फर्क नहीं पड़ता।

तो मेरे पास वास्तव में दो प्रश्न हैं, क्या मैं गलत विकल्प या कुछ के साथ डीआईसी का उपयोग कर रहा हूं, या क्या सी प्रोग्रामर कुछ अन्य मुहावरे का उपयोग करते हैं जो पुराने दिनों में वापस परिभाषित करते हैं?

संदर्भ:

+2

यदि यह [यह डीआईसीई कंपाइलर] (http://www.obviously.com/amiga/) है तो निश्चित रूप से सामान्य रूप से गार्ड के साथ काम करने के लिए उपयोग किया जाता है। – tinman

+1

मेरा पहला संस्करण (21 वां प्रिंटिंग) के एंड आर पृष्ठ 208 पर #ifndef का वर्णन करता है, इसलिए यह थोड़ी देर के आसपास रहा है। –

+2

ओह, वह सवाल यादें वापस लाता है! मैंने शेयरवेयर संस्करण के लिए भी भुगतान किया। :) इसके अलावा, इसे काम करना चाहिए, अन्यथा सभी सिस्टम हेडर भी असफल हो जाएंगे। –

उत्तर

16

यदि यह this C compiler तो sources (src \ dcpp \ cpp.c) को देखकर है आप देख सकते हैं कि नई-पंक्तियों केवल गाड़ी वापसी चरित्र और नहीं linefeed चरित्र शामिल हैं।

आप एक लाइन CRLF के साथ समाप्त फिर जब संकलक लाइन के शुरू में खाली स्थान के स्ट्रिप्स है, तो यह # के साथ शुरू होना चाहिए # जो एक सिंटैक्स त्रुटि है पहले linefeed पट्टी नहीं है, पूर्वप्रक्रमक निर्देशों के बाद से लाइन में पहला गैर-व्हाइटस्पेस चरित्र।

+3

हे, तुमने मुझे एक सेकंड से हराया :) मैं अपना जवाब हटा दूंगा, प्रतिनिधि का आनंद लेंगे। – interjay

+0

@interjay: धन्यवाद, आप का बहुत खेल :) – tinman

+0

आप सभी को धन्यवाद, बहुत सी समझदार और अमिगा लोगों को दबाने के लिए अच्छा है।:-) –

3
निर्माण करने के लिए
#if SOMETHING 
#else 




#endif 

बस हर जगह काम कर सकते हैं

+0

आह! कोशिश करेंगे कि –

+0

धन्यवाद! वह ऐसा नहीं था लेकिन एक और कंपाइलर की मदद कर सकता है। –

संबंधित मुद्दे