printf函数用了两个预定义宏,warning显示 too many arguments for format [-Wformat-extra-args]

娥月葬星魂 2019-07-12 10:48:32

printf("open file %s failed! ",file,__func__,__LINE__);

gcc下编译,用了两个预定义宏__func__,__LINE__,warning显示 too many arguments for format [-Wformat-extra-args],这是为什么,应该怎样改?
...全文
3498 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
轻箬笠 2019-07-12
  • 打赏
  • 举报
回复
printf("%s(%d): %s() open file %s failed! ", __FILE__,__LINE__,__func__,file);
轻箬笠 2019-07-12
  • 打赏
  • 举报
回复
参考这个
#define Y_DBG(fmt,args...) printf("=====> %s(%d): %s() "#fmt"\n",__FILE__,__LINE__,__func__,##args)

printf("open file %s failed! ",file,__func__,__LINE__);
改成
printf("%s(%d): %s() open file %s failed! ", __FILE__,__func__,__LINE__,file);
636f6c696e 2019-07-12
  • 打赏
  • 举报
回复
__func__宏是字符串,__LINE__宏是数字
自信男孩 2019-07-12
  • 打赏
  • 举报
回复
printf("open file %s,%s, %d failed! ",file,__func__,__LINE__);

前后不对应,所以会有警告~

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧