Мне нужен макрос для передачи __FILE__ и __LINE__ функции с аргументами по умолчанию. Это открыло банку червей, поскольку аргументы по умолчанию с макросами либо невозможны, либо очень запутаны, и мне нужно поддерживать как GCC, так и MSVC, если это возможно:
class Class
{
#ifdef _DEBUG
int Function(int a, int b = 10, int c = 20) { return a + b + c; }
#else
int DebugFunction(const char* filename, int lineNo, int a, int b = 10, int c = 20)
{
printf("%s (%i) a:%i b:%i c:%i\n", filename, lineNo, a, b, c);
return a + b + c;
}
//Not possible
#define Function( DebugFunction(__FILE__, __LINE__
#endif
}
Я пытался \экранировать ( безрезультатно. Кодовая база огромна, поэтому исправление отсутствующих аргументов по умолчанию или создание нескольких макросов не является популярным вариантом.
Любые решения?
__FILE__и__LINE__к вызовам определенных функций. Это ваша цель? - person Aaron McDaid   schedule 07.02.2012