LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 658|回复: 0

在看 UNIX环境高级编程 遇到的问题

[复制链接]
发表于 2009-4-18 22:54:48 | 显示全部楼层 |阅读模式
在编译书中附录的 标准出错处理例程时遇到的了gcc的警告,不明白为什么!
书中附录中的b-3程序用来实现ourhdr.h中的log_xxx函数的

  1. static void
  2. log_doit(int errnoflag, int priority, const char *fmt, va_list ap)
  3. {                          
  4.         int     errno_save;
  5.         char    buf[MAXLINE];

  6.         errno_save = errno;     /* value caller might want printed */
  7.         vsprintf(buf, fmt, ap);
  8.         if (errnoflag)
  9.                 sprintf(buf+strlen(buf), ": %s", strerror(errno_save));
  10.         strcat(buf, "\n");
  11.         if (debug) {
  12.                 fflush(stdout);
  13.                 fputs(buf, stderr);
  14.                 fflush(stderr);
  15.         } else
  16.                 syslog(priority, buf);/* gcc报警的地方*/
  17.         return;
  18. }
复制代码

gcc在编译时报“格式字符串不一个字面字符串而且没有待格式化的实参”
我测试后发现是buf参数导至的,我把参数换成一个常量字符串就行了,请问是为什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表