क्या किसी को किसी भी सी 99 प्रीप्रोसेसर जादू के बारे में पता है जो स्ट्रिंग बनाने की अनुमति देता है जिसमें दूसरी स्ट्रिंग दो बार बार-बार होती है?सी प्रीप्रोसेसर मैक्रो एक स्ट्रिंग को वापस करने के लिए
उदा।
STRREP("%s ", 3)
पूर्व प्रसंस्करण के बाद
"%s %s %s "
हो जाता है।
केवल एक चीज मैं अपने आप को के बारे में सोच सकता है इस
#define STRREP(str, N) STRREP_##N(str)
#define STRREP_0(str) ""
#define STRREP_1(str) str
#define STRREP_2(str) str str
#define STRREP_3(str) str str str
...
जो अच्छी तरह से काम करता है की तरह कुछ था, लेकिन जैसा कि मैंने मैन्युअल रूप से प्रत्येक पुनरावृत्ति लंबाई के लिए एक मैक्रो निर्धारित करने के लिए है बदसूरत है। मैं इसे विविधता मैक्रोज़ और मैक्रो के साथ here दिखाए गए मैक्रो तर्कों की संख्या लौटने के साथ एक साथ उपयोग करना चाहता हूं।
मैं बहुत यकीन है कि यह संभव नहीं है हूँ। यहां एक और प्रश्न देखें जो समान है - http://stackoverflow.com/questions/319328/writing-a-while-loop-in-the-c-preprocessor – mattjgalloway
धन्यवाद, @mattjgalloway। आप सही लग रहे हैं। प्रीप्रोसेसर का उपयोग कर शुद्ध सी 99 में परिवर्तनीय रिकर्सन लम्बाई का कोई तरीका नहीं है। तो मेरा विचार एकमात्र (बदसूरत!) तरीका प्रतीत होता है। – sonntam