C'è un modo migliore per "sovraccaricare" una macro come questa? Ho bisogno di una macro che accetti vari numeri di parametri.Macro sovraccarico C
#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)
Chiamato come questo
DEBUG_TRACE_2("more", "params");
C'è qualche supporto per varargs nel processore di macro C++ (non so di ANSI C), ma ogni volta Provo ad usarlo mi sembra di rischiare di provocare un'implosione dell'universo conosciuto. –
Un po 'qui: http: //stackoverflow.com/questions/679979/how-to-make-a-variadic-macro-variable-number-of-arguments –
'#define DEBUG_TRACE (ar, n) std :: string p [] = ar; log _log (__ FUNCTION __, p, n) ', chiama con' DEBUG_TRACE ({"more", "params"}, 2); 'era troppo semplice? –