¿Hay una mejor manera de "sobrecargar" una macro como esta? Necesito una macro que acepte varios números de parámetros.Sobrecarga C macros
#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)
llamado así
DEBUG_TRACE_2("more", "params");
Hay compatibilidad con algunos varargs en el procesador de macros C++ (no sé nada de ANSI C), pero todo el tiempo Intento usarlo. Parece arriesgarse a causar una implosión del universo conocido. –
Un poco aquí: http: //stackoverflow.com/questions/679979/how-to-make-a-variadic-macro-variable-number-of-arguments –
'#define DEBUG_TRACE (ar, n) std :: cadena p [] = ar; log _log (__ FUNCTION __, p, n) ', llamada con' DEBUG_TRACE ({"more", "params"}, 2); 'era demasiado simple? –