निम्नलिखित कोड एक एमआईएसआरए चेक पर विफल रहता है। ठोस त्रुटि संदेश है:पूर्णांक प्रकार कैसे पूर्ण रूप से परिवर्तित होते हैं?
(मिश्रा सी: 2004 10.1/आर) परोक्ष एक अलग अंतर्निहित प्रकार में परिवर्तित नहीं किया जाएगा, यदि यह एक में रूपांतरण नहीं है पूर्णांक प्रकार की अभिव्यक्ति का मूल्य एक ही signedness
typedef enum _MyEnum { One, Two } MyEnum;
MyEnum MyVariable;
int foo(void)
{
int result = 1;
if (One == MyVariable) // fails here with MISRA-C:2004 10.1/R
{
result = 2;
}
return result;
}
- के व्यापक पूर्णांक प्रकार क्यों तार्किक व्यंजक बदल जाती है?
- यहां क्या परिवर्तित किया गया है?
- जब मैं
One
औरMyVariable
स्वैप करता हूं तो कोड एमआईएसआरए चेक क्यों पास करता है?
संपादित: संकलक एक टीआई शामिल मिश्रा के साथ "MSP430 C/C++ संकलक v4.0.0" नियमों की जांच है।
मुझे इस मिसा चीज़ के बारे में पहले से ही खराब क्रूर हैं। आप क्या कर रहे हैं पूरी तरह से ठीक है। – cnicutar
मैं दूसरा संकलक बग परिकल्पना – Alex
करता हूं क्या यह 'if (MyVariable == एक) {}' के लिए एक ही त्रुटि/चेतावनी उत्पन्न करता है? – wildplasser