2013-07-01 7 views
5

है यह करता है, सब के बाद, stddef.h और C++ config.h में परिभाषित किया गया हो:ग्रहण CDT कोड विश्लेषण सोचता size_t अस्पष्ट

C++ config.h:

namespace std 
{ 
    typedef __SIZE_TYPE__  size_t; 
    typedef __PTRDIFF_TYPE__ ptrdiff_t; 

#ifdef __GXX_EXPERIMENTAL_CXX0X__ 
    typedef decltype(nullptr) nullptr_t; 
#endif 
} 

stddef ज:

typedef __SIZE_TYPE__ size_t; 

तो जब एक फ़ाइल using namespace std करता है, ग्रहण CDT कोड विश्लेषण उलझन में है और कहता है प्रतीक अस्पष्ट है हो जाता है। मुझे नहीं पता कि जीसीसी इस के आसपास कैसे काम करता है, लेकिन क्या किसी के पास ग्रहण कोड विश्लेषण के लिए क्या करना है इसके बारे में कोई सुझाव है?

+0

कोड में आप दिखाते हैं कि size_t केवल C++ config.h में परिभाषित किया गया है। __SIZE_TYPE__ को stddef.h में परिभाषित किया गया है और C++ config.h में उपयोग किया जाता है - वास्तविक समस्या – Mark

+0

@ मार्क ओप्स, गलत रेखा में कॉपी की गई है। अब तय धन्यवाद! – Chris

+0

फ़ाइल में कहां उपयोग करते हैं? – Mark

उत्तर

4

मुझे कोड विश्लेषण में उस त्रुटि को पूरी तरह अक्षम करने के द्वारा इसके आसपास मिल गया।

परियोजना -> गुण -> C/C++ जनरल -> कोड विश्लेषण

सही का निशान हटाएँ 'अस्पष्ट समस्या'

1

यह ज्यादातर है, लेकिन नहीं पूरी तरह से सच है कि वैध सी कोड भी है वैध सी ++ कोड। आपने एक मामला मारा है जहां यह सच नहीं है। इस मामले में इस मामले में अंतर के बारे में बहुत अच्छा जवाब है: Repeated typedefs - invalid in C but valid in C++? यह भी ध्यान देने योग्य है कि सी 11 इस असंगतता को ठीक करेगा।

उपरोक्त, वास्तव में, यह व्यवहार एक कमी और सीडीटी कोड विश्लेषण में दोष के बीच कहीं है। सीडीटी को यह जानना चाहिए कि कोड सी ++ है और सिंटैक्स को अनुमति देने के लिए, लेकिन ऐसा लगता है जैसे यह सोचता है कि यह सी है और इसे अस्वीकार कर रहा है।

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