Type cast hardcoded value to volatile UINT8 pointer - C programming -
# MMIO_READ8 परिभाषित करें (पता) (* (वाष्पशील UINT8 *) (पता)) Data8 = MMIO_READ8 (0xFCE00000) ; // 0xFCE0000 मेमोरी मैप एड्रेस स्पेस है मैं मीरकोसॉफ्ट कंपाइलर (एमएसवीसी) का उपयोग कर रहा हूं और नीचे की चेतावनी प्राप्त कर रहा हूं। संकलक ध्वज में त्रुटि के रूप में हम चेतावनी सेट करते हैं इसलिए मुझे इस विंगिंग के समाधान के लिए मदद की ज़रूरत है।
चेतावनी C4306: 'प्रकार कास्ट': अधिक से अधिक आकार के 'अहस्ताक्षरित पूर्णांक' से 'वाष्पशील यूआईएनटी 8 *' का रूपांतरण < / P>
यह इसलिए होता है क्योंकि लक्ष्य प्रकार (एक सूचक) स्रोत प्रकार ( से अधिक बड़ा है) )। मुझे लगता है कि आप 64 बिट बिल्ड कर रहे हैं जिसका मतलब है कि अहस्ताक्षरित int 4 बाइट्स है और सूचक 8 बाइट्स है।
MSDN पृष्ठ यह भी बताता है कि इस मामले में लक्ष्य मूल्य के बढ़ते बिट्स (जैसे ऊपरी 32 बिट) को शून्य कर दिया गया है, जो संभवतः आप क्या चाहते हैं।
इस चेतावनी को चुप्पी करने के लिए, आप मैक्रो को समायोजित कर सकते हैं ताकि आप पहले पर्याप्त रूप से बड़े पूर्णांक एक सूचक को कास्ट करने से पहले टाइप करें जैसे
#define MMIO_READ8 (पता) (* (वाष्पशील UINT8 *) (intptr_t) (पता))
Comments
Post a Comment