'uint32_t' पहचानकर्ता को त्रुटि नहीं मिली


94

मैं विंडोज़ के लिए लिनक्स सी से विज़ुअल सी ++ में कोड पोर्ट कर रहा हूं।

विजुअल C ++ पता नहीं है #include <stdint.h>इसलिए मैंने इसे टिप्पणी की।

बाद में, मैंने उन 'uint32_t': identifier not foundत्रुटियों को बहुत कुछ पाया । इसे कैसे हल किया जा सकता है?


जिसमें आप टिप्पणी कर रहे हैं?
डैनियल ए। व्हाइट

3
और, विजुअल C ++ के कौन से संस्करण का उपयोग कर रहे हैं? uint32_tऔर अन्य सटीक-चौड़ाई पूर्णांक प्रकार, C99 और C ++ 0x का ही हिस्सा हैं, इसलिए पुराने compilers (विज़ुअल सी की तरह ++ 2008 और पुराने) उन्हें जरूरत नहीं है।
जेम्स मैकनेलिस

काफी !!! #include <stdint.h> #include <syslog.h> #include <linux / stddef.h> #include <pthread.h> #include <unistd.h> धन्यवाद !!!
केविन

मैं विजुअल C ++ एक्सप्रेस 2008 का उपयोग कर रहा हूं।
केविन

4
@kevin: आप केवल प्लेटफ़ॉर्म-विशिष्ट हेडर नहीं निकाल सकते हैं और उनके बारे में भूल सकते हैं। आपको नए प्लेटफॉर्म के लिए विकल्प तलाशने होंगे। इसमें अक्सर पोर्टेबल बनाने के लिए अपने कोड को फिर से लिखने की कुछ मात्रा शामिल होती है।
ऑर्बिट में हल्कापन दौड़

जवाबों:


114

यह प्रकार C शीर्ष लेख में परिभाषित किया गया है <stdint.h>जो C ++ 11 मानक का हिस्सा है लेकिन C ++ 03 में मानक नहीं है। हेडर पर विकिपीडिया पृष्ठ के अनुसार , इसे विज़ुअल स्टूडियो के साथ VS2010 तक शिप नहीं किया गया है।

इस बीच, आप संभवतः उस शीर्षक के अपने स्वयं के संस्करण को नकली कर सकते हैं typedefजो कि सी द्वारा अपेक्षित प्रकारों के लिए Microsoft के कस्टम पूर्णांक प्रकारों को मैप करता है। उदाहरण के लिए:

typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */

उम्मीद है की यह मदद करेगा!


4
आप बूस्ट के cstdint कार्यान्वयन का उपयोग भी कर सकते हैं।
पीटर ह्यून

मैं आपके कोड को अपने पेज पर कॉपी और पेस्ट करता हूँ। लेकिन यह इस त्रुटि को "वाक्यविन्यास त्रुटि: लापता ';' पहचानकर्ता 'int32_t' और "लापता प्रकार निर्दिष्ट करने से पहले - int माना जाता है। नोट: C ++ डिफ़ॉल्ट-int का समर्थन नहीं करता है"।
केविन

क्षमा करें पीटर, मैं सी के लिए नया हूं। बूस्ट का cstdint कार्यान्वयन क्या है?
केविन

3
Microsoft का निश्चित आकार का पूर्णांक प्रकार "t" में समाप्त नहीं होता है। बस कोशिश करो __int32
बेन वोइगट

1
u_int32_tऔर uint32_tएक ही प्रकार के नहीं हैं; एक के बाद एक अतिरिक्त अंडरस्कोर है u। यह एक अलग समस्या की तरह लगता है।
templatetypedef

78

आप कर सकते हैं #include <cstdint>। यह 2011 से C ++ - मानक का हिस्सा है।


1
यह संभवतः सी + और वीएस २०१ जैसे प्रश्न की बाधाओं को देखते हुए स्वीकृत उत्तर होना चाहिए। अपने स्वयं के टाइपफेड को रोल करने की कोई आवश्यकता नहीं है।
jww

7

मेरे पास एक ही त्रुटि है और इसे निम्न फ़ाइल में शामिल किया गया है

#include <stdint.h>

आपकी फ़ाइल की शुरुआत में।


जैसा कि सवाल में कहा गया है, stdint.h C ++ संकलक का हिस्सा नहीं है जिसे ओपी उपयोग कर रहा है। यह उत्तर प्रश्न को संबोधित नहीं करता है।
IInspectable


3

Msinttypes प्रोजेक्ट पृष्ठ पर एक कार्यान्वयन उपलब्ध है - "यह प्रोजेक्ट Microsoft Visual Studio में stdint.h और inttypes.h की अनुपस्थिति को भरता है"।

मेरे पास इस कार्यान्वयन का अनुभव नहीं है, लेकिन मैंने इसे SO पर दूसरों द्वारा अनुशंसित देखा है।


यह बेहतर और सबसे अधिक इस्तेमाल किया जाने वाला कार्यान्वयन है।
फिलिप ओम्ब्रेडैन

2

विंडोज पर मैं आमतौर पर विंडोज़ प्रकारों का उपयोग करता हूं। इसका उपयोग करने के लिए आपको शामिल करना होगा <Windows.h>

इस मामले में uint32_t UINT32 या सिर्फ UINT है।

सभी प्रकार की परिभाषाएँ यहाँ हैं: http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx


0

मुझे VS2010 में प्रोजेक्ट चलाना था और मैं कोड में कोई संशोधन नहीं कर सकता था। मेरा समाधान vS2013 और VS2010 बिंदु VC ++ निर्देशिकाओं में स्थापित करने के लिए था-> प्रोग्राम फ़ाइलें (x86) \ Microsoft Visual Studio 12.0 \ VC \ शामिल करें। तब मेरा प्रोजेक्ट बिना किसी मुद्दे के संकलित हुआ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.