2012-10-12 13 views
5

संभव डुप्लिकेट सी में stringification साथ पूर्वप्रक्रमक में प्रदर्शन करने के लिए:
How to stringify an expression in Cकैसे गणना

मैं मैं यहाँ मेरी समस्या से कुछ समाधान पा सकते हैं उम्मीद है।

मैं एडीडी 1 में परिभाषित हेक्स संख्या जोड़ना चाहता हूं और इसे स्ट्रिंग फॉर्म में *str में रखना होगा।

यह केवल एक उदाहरण है, इसकी संभावना को साबित करने के लिए। मैं वास्तव में हेडर फ़ाइल में ऐसा कर रहा हूं।

#include <stdio.h> 


#define XMK_STR(x)  #x 
#define MK_STR(x)  XMK_STR(x) 
#define ADD1 0x6000+0x10 

main() 
{ 
     char *str = "START " MK_STR(ADD1) "\n"; 
     printf(str); 
} 
+1

तो क्या आप "0x6010" स्ट्रिंग चाहते हैं? – Ancurio

+0

@ouah आवश्यकता समान है लेकिन मुझे वास्तव में हेडर फ़ाइल में ऐसा करना है। – linuxexplore

+0

@Ancurio हाँ मैं चाहता हूं कि "0x6010" – linuxexplore

उत्तर

4

नहीं, आप पूर्वप्रक्रमक का उपयोग कर गणना नहीं कर सकता। यह अनिवार्य रूप से एक पाठ-प्रतिकृति है।

आप sprintf() का उपयोग कर सकते हैं और str में जोड़ा गया परिणाम प्रिंट कर सकते हैं जिसके लिए आप ADD1 का उपयोग कर सकते हैं।

+1

हाँ इसे स्पष्ट करने के लिए, स्प्रिंट प्रीप्रोसेसर का हिस्सा नहीं होगा। यह केवल तब ही निष्पादित होगा जब प्रीप्रोसेसर – fayyazkl

+0

के बाद संकलक चलता है मतलब है कि मैं हेडर फ़ाइल में ऐसा नहीं कर सकता? अगर कुछ है तो मैं कुछ हैक ढूंढ रहा हूं ;-) – linuxexplore

+1

हाँ, आप ऐसा नहीं कर सकते। हालांकि, आप http://ideone.com/CHQLA या http://ideone.com/1VNUs जैसे कुछ कोशिश कर सकते हैं। –