2012-11-10 4 views
5

सी ++ 1x शाब्दिक प्रत्यय (cmp। उदाहरण http://ecn.channel9.msdn.com/events/GoingNative12/GN12Cpp11Style.pdf) का समर्थन करता है। मैं जीसीसी 4.7 का उपयोग कर रहा हूं और हमारे सिस्टम के लिए कुछ इकाइयों को पेश करना चाहता हूं। सबसे महत्वपूर्ण रूप से हमारे कोड का आधा डिग्री और अन्य आधा रेडियंस (विभिन्न तृतीय पक्ष पुस्तकालयों के कारण) का उपयोग करता है, और जाहिर है यह हमेशा गलतियों का निरंतर कारण है। कहने में सक्षम होना उदा। "रेडियन कोण = 90_deg;" बहुत उपयोगी होगा।सी ++ इकाइयों के लिए "शाब्दिक प्रत्यय कोड" उपलब्ध

मैंने देखा है कि इसे कैसे कार्यान्वित किया जाए और यह करने योग्य दिखता है, हालांकि सब कुछ ठीक करने में कुछ समय लगेगा। तो मुझे आश्चर्य है कि वहां एक पूर्ण/परीक्षण कार्यान्वयन है जो पहले से ही इसका उपयोग कर सकता है जिसका उपयोग किया जा सकता है (प्रत्येक सी ++ डेवलपर को फिर से कार्यान्वित करने की आवश्यकता नहीं है, है?)। रेड/डिग्री के अलावा मैं लंबाई माप (मिमी, सेमी, एम) की तलाश में हूं। मैं पहले से ही googled है लेकिन कुछ भी उपयोगी नहीं मिला।

क्या कोई भी उदाहरण के कार्यान्वयन को जानता है एसआई प्रणाली का उपयोग किया जा सकता है?

+1

[यह संदर्भ] (http://en.cppreference.com/w/cpp/language/user_literal) उदाहरण के एक जोड़े हैं। –

+0

धन्यवाद, लेकिन मैं उदाहरण/संदर्भों की तलाश नहीं कर रहा हूं। मुझे पूरा भरोसा है कि मैं अपनी ज़रूरतों को पूरा करने के लिए सचमुच एक पूर्ण सेट और कलाकारों को कास्ट कर सकता हूं। हालांकि इसमें सभी उपयोग मामलों का परीक्षण करने के लिए लागू करने में समय लगेगा। चूंकि एसआई सिस्टम सभी के लिए समान है, मैं मानता हूं कि सैकड़ों सी ++ डेवलपर्स ऐसा कुछ करते हैं - इसलिए मुझे उम्मीद है कि किसी ने एक साफ और परीक्षण कार्यान्वयन किया है जो "बस" उपयोग किया जा सकता है। मैं पहिया का पुन: आविष्कार नहीं करना चाहता हूं। व्हील का पुन: आविष्कार नहीं करना चाहते हैं, – Frankie

+3

+1। यह ** ** नहीं है जो आप खोज रहे हैं लेकिन बूस्ट [बूस्ट.इनिट्स] (http://www.boost.org/doc/libs/1_52_0/doc/html/boost_units.html) के तहत एक टेम्पलेटेड संस्करण प्रदान करता है। मैं उत्सुक हूं कि आपको क्या अन्य जवाब मिलेगा। – Ali

उत्तर

2

boost.units का उपयोग करें।

आपको अपेक्षित लाभ मिलेगा: अलग-अलग इकाइयों में व्यक्त मीट्रिक से सुरक्षित रूप से निपटने में सक्षम होना।
बढ़ावा इकाइयों के साथ वाक्य रचना है कि बुरा नहीं है:

quantity<length> dx(2.0*meter); 
+1

कोई कारण नहीं है boost.units का उपयोग _with_ उपयोगकर्ता परिभाषित प्रत्यय नहीं किया जा सकता है ... – bames53

+0

@ bames53 मैं यह नहीं कहना चाहता था। यह सिर्फ इतना बढ़ावा है। यूनिट यूडीएल प्रदान नहीं करता है। – log0

+0

आप उल्लेख करते हैं कि मुझे वही लाभ मिलते हैं। हालांकि मुझे लगता है कि मुझे सी ++ 11 एक्स कार्यान्वयन मिल रहा है, बूस्ट बेहतर क्यों होगा? – Frankie

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