我需要一个宏将__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__
到某些函数调用中。这是你的目标吗? - Aaron McDaid