宏定义多个进参时出错

宏定义多个入参时出错
想打印日志 取出文件名,函数和所在行 定义为宏的形式
如果参数只有3个时,不会出错,但再多个参数时就会出现
不能将参数 3 从“int”转换为“char *”

代码如下
#define aaa __FILE__,__FUNCTION__,__LINE__
void FunB(char *a, char *b, char *c,int i)
{
    printf("%s,%s,%d\n",a,b,c);
}

如果换成#define aaa "a","b","c"
就可以。
原因应该是 __FILE__,__FUNCTION__,__LINE__
请问怎么处理
------解决思路----------------------
FunB(char *a, char *b, char *c,int i)这个函数就是需要四个参数的
可以这样用
#define DBGMSG(msg) FunB(msg, __FILE__,__FUNCTION__,__LINE__)
然后这样用
DBGMSG(“-----Msg-----”);
------解决思路----------------------
...__LINE__ 是int 不能转为char* 报错是没有问题的啊宏定义多个进参时出错