क्या इस तरह के मैक्रो को "ओवरलोड" करने का कोई बेहतर तरीका है? मुझे एक मैक्रो की आवश्यकता है जो विभिन्न मानकों को स्वीकार करता है।ओवरलोड सी मैक्रोज़
#define DEBUG_TRACE_1(p1) std::string p[] = {p1}; log _log(__FUNCTION__, p, 1)
#define DEBUG_TRACE_2(p1, p2) std::string p[] = {p1, p2}; log _log(__FUNCTION__, p, 2)
#define DEBUG_TRACE_3(p1, p2, p3) std::string p[] = {p1, p2, p3}; log _log(__FUNCTION__, p, 3)
#define DEBUG_TRACE_4(p1, p2, p3, p4) std::string p[] = {p1, p2, p3, p4}; log _log(__FUNCTION__, p, 4)
#define DEBUG_TRACE_5(p1, p2, p3, p4, p5) std::string p[] = {p1, p2, p3, p4, p5}; log _log(__FUNCTION__, p, 5)
इस
DEBUG_TRACE_2("more", "params");
सी ++ मैक्रो प्रोसेसर (एएनएसआई सी के बारे में पता नहीं है) में कुछ varargs समर्थन नहीं है, लेकिन हर बार: यह variadic तर्क की तरह लगता है आपके उपयोग के मामले के लिए ठीक हो जाएगा के बाद से, मैं सिर्फ एक लिंक प्रदान करेंगे मैं इसका उपयोग करने की कोशिश करता हूं मुझे लगता है कि ज्ञात ब्रह्मांड का एक प्रत्यारोपण होता है। –
यहां थोड़ा सा: http: //stackoverflow.com/questions/679979/how-to-make-a-variadic-macro-variable-number-of-arguments –
'# परिभाषित DEBUG_TRACE (ar, n) std :: स्ट्रिंग पी [] = आरआर; लॉग _log (__ फ़ंक्शन __, पी, एन) ', 'DEBUG_TRACE ({" अधिक "," पैरा "}, 2 के साथ कॉल करें;' बहुत आसान था? –