2012-08-02 10 views
7

मैं जब नीचे कोड संकलन निम्न त्रुटियों हो रही है:<त्रुटि C2059: सिंटेक्स त्रुटि: 'निरंतर'> जब साथ संकलन स्थिरांक पूर्णांक

3>c:\hedge\hedge\hedge\AisTarget.h(22) : error C2059: syntax error : 'constant' 
3>c:\hedge\hedge\hedge\AisTarget.h(22) : error C2238: unexpected token(s) preceding ';' 

#if !defined(AisTarget_h) 
#define AisTarget_h 

#include "GeneralAviationItems.h" 
#include <string> 

namespace HEDGE { 
    using namespace GeneralAviation; 

    class AisTarget : public WaypointLatLon { 
     public: 
      static const int NO_DATA = -1000; //here is the error 
    };  
} // end namespace HEDGE 

#endif 
+0

आपकी '#if! परिभाषित' को' # ifndef' btw के साथ प्रतिस्थापित किया जा सकता है। – chris

+0

यदि आप 'स्थिरांक int NO_DATA = -1000;' 'enum {NO_DATA = -1000} के साथ बदलते हैं, तो यह काम करता है;'? उस स्थिति में, आपके पास एक बहुत पुराना कंपाइलर है। कृपया हमें मत बताएं कि आप विजुअल स्टूडियो 6 का उपयोग कर रहे हैं ;-) – fredoverflow

+13

यह कोड वास्तव में विमानन में उपयोग नहीं किया जा रहा है, है ना? दृश्य स्टूडियो 2008 एक्सप्रेस का उपयोग कर – stijn

उत्तर

18

यह संभावना NO_DATA है पहले से ही मैक्रो के रूप में परिभाषित किया गया है, और इसलिए यह उस चीज़ में विस्तार कर रहा है जो एक चर नाम के कंपाइलर की धारणा से सहमत नहीं है। कुछ और करने के लिए NO_DATA पुनः नामकरण का प्रयास करें।

यदि ऐसा कोई संघर्ष नहीं था, तो कोड को संकलित किया गया था, जैसा कि here प्रदर्शित किया गया था।

+0

वास्तव में वाह अच्छी सोच। – chris

+0

यही कारण है कि मैं सी ++ में अपरकेस पहचानकर्ताओं का उपयोग नहीं करता हूं। मानक पुस्तकालयों में बहुत अधिक लापरवाही नामित मैक्रोज़। windows.h भयानक है – kotlomoy

+0

@ kotlomoy: हाँ, यह आमतौर पर अच्छा अभ्यास है। कम से कम, ऊपरी केस पहचानकर्ताओं को ऐसे टकराव से बचने के लिए कुछ विशिष्ट उपसर्ग या पोस्टफिक्स होना चाहिए (अधिमानतः मिश्रित या निचले मामले में)। – jxh

3

भले ही इस पोस्ट की उम्र हो: त्रुटि आमतौर पर तब हो सकती है जब एकाधिक पुनर्वितरण, ऊपरी/निचले मामले की परवाह किए बिना, सह-अस्तित्व में भी हो। इसमें समाधान की .vcprojx फ़ाइल में संभावित प्रीप्रोसेसर परिभाषाएं शामिल हैं!। उपरोक्त फ़ाइल में

<ItemDefinitionGroup> 
    <ClCompile> 
     <PreprocessorDefinitions>$(Configuration);%(PreprocessorDefinitions)</PreprocessorDefinitions> 
    </ClCompile> 
    </ItemDefinitionGroup> 

जैसे कुछ पर विचार करें। अब, "डीबग" और "रिलीज" कॉन्फ़िगरेशन होने पर आप शायद कुछ समस्याएं और C2059 त्रुटि के संभावित स्रोत में भाग लेंगे। मैंने इस दुविधा को exaclty अनुभव किया।

+0

वाह में परिभाषित बीटीडब्ल्यू है, यह अभी मेरे साथ हुआ और आपकी पोस्ट के लिए धन्यवाद, मैं इसे किसी भी समय ठीक करने में सक्षम था। – MoneyBall

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