当前位置:  技术问答>linux和unix

怎么解决这一个warning

    来源: 互联网  发布时间:2016-01-12

    本文导语:  刚学Unix编程,系统是freebsd5.4, 编译器是gcc V3.4.2,在编译下面程序时总是有warning: assignment makes pointer from integer without a cast google和baidu了大半天都没能找到,请高手指点下,怎样才能去掉warning? 出warning的地方加...

刚学Unix编程,系统是freebsd5.4, 编译器是gcc V3.4.2,在编译下面程序时总是有warning: assignment makes pointer from integer without a cast
google和baidu了大半天都没能找到,请高手指点下,怎样才能去掉warning?

出warning的地方加上中文释了

#define _POSIX_SOURCE 199506L   /*有人说加上这一句可以去掉warning ,但我加上了也没用*/


#include "apue.h"
#include 

#include  /*for definition of errno*/
#include  /*for c variable arguments*/


#include 


int log_to_stderr;

int main(int argc, char *argv[])
{
     DIR *dp;
     struct dirent *dirp;

     if(argc != 2)
          err_quit("usage: ls directory_name");
     
     if(dp = opendir(argv[1]) == NULL)      /*出了warning*/
          err_sys("can't open %s", argv[1]);

     while(dirp = readdir(dp) != NULL)      /*出了warning*/
          printf("%sn", dirp ->d_name);

     closedir(dp);
     exit(0);
}

//#include "apue.h"


static void err_doit(int, int, const char *, va_list);

/*
 * Nonfatal error related to a system call.
 * Print a message and return.
 */
void err_ret(const char *fmt, ...)
{
va_list ap;

va_start(ap, fmt);
err_doit(1, errno, fmt, ap);
va_end(ap);
}

/*
 * Fatal error related to a system call
 * Print a message and terminate
 */
void err_sys(const char *fmt, ...)
{
va_list ap;

va_start(ap, fmt);
err_doit(1, errno, fmt, ap);
va_end(ap);
exit(1);
}

/*
 * Fatal error unrelated to a system call
 * Error code passed as explicit parameter.
 * Print error message and terminate.
 */
void err_exit(int error, const char *fmt, ...)
{
va_list ap;

va_start(ap, fmt);
err_doit(1, error, fmt, ap);
va_end(ap);
exit(1);
}

/*
 * Fatal error related to a system call.
 * Print a message, dump core, and terminate.
 */
void err_dump(const char *fmt, ...)
{
va_list ap;

va_start(ap, fmt);
err_doit(1, errno, fmt, ap);
va_end(ap);
abort(); /*dump core and terminate*/
exit(1); /* shouldn't get here*/
}

/*
 * Nonfatal error unrelated to a system call.
 * Print a message and return.
 */
void err_msg(const char *fmt, ...)
{
va_list ap;

va_start(ap, fmt);
  err_doit(0, 0, fmt, ap);
va_end(ap);
}

/* 
 * Fatal error unrelated to a system call.
 * Print a message and terminate
 */
void err_quit(const char *fmt, ...)
{
va_list ap;

  va_start(ap, fmt);
err_doit(0, 0, fmt, ap);
va_end(ap);
exit(1);
}

/*
 * Print a message and return to a caller.
 * Caller specifies "errnoflag".
 */
static void err_doit(int errnoflag, int error, const char *fmt, 
                     va_list ap)
{
char buf[MAXLINE];
vsnprintf(buf, MAXLINE, fmt, ap);
if(errnoflag)
snprintf(buf + strlen(buf), MAXLINE -strlen(buf), ": %s",
strerror(error));
strcat(buf, "n");
fflush(stdout);  /*in cast stdout and stderr are the same*/
fputs(buf, stderr);
fflush(NULL); /*flushes all stdio output streams*/
}

/* 
 * Error routines for programs that can run as a daemon
 */

//#include "apue.h"


static void log_doit(int, int, const char *, va_list ap);

/*
 * Caller must define and set this: nonzero if interactive,
 * zero if daemon
 */
extern int log_to_stderr;

/*
 * Initialize syslog(), if running as daemon
 */
void log_open(const char *ident, int option, int facility)
{
if(log_to_stderr == 0)
openlog(ident, option, facility);
}

/*
 * Nonfatal error related to a system call.
 * Print a message wit a system's errno value and return.
 */
void log_ret(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
log_doit(1, LOG_ERR, fmt, ap);
va_end(ap);
}

/*
 * Fatal error related to a system call.
 * Print a message and terminate.
 */
void log_sys(const char *fmt, ...)
{
va_list ap;
  va_start(ap, fmt);
log_doit(1, LOG_ERR, fmt, ap);
va_end(ap);
exit(2);
}

/*
 * Nonfatal error unrelated to a system call.
 * Print a message and return
 */
void log_msg(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
log_doit(0, LOG_ERR, fmt, ap);
va_end(ap);
}

/*
 * Fatal error unrelated to a system call
 * Print a message and teminate
 */
void log_quit(const char *fmt, ...)
{
va_list ap;
  va_start(ap, fmt);
log_doit(0, LOG_ERR, fmt, ap);
va_end(ap);
exit(2);
}

/*
 * Print a message and return to a caller.
 * Caller specifies "errnoflag" and "priority"
 */
static void log_doit(int errnoflag, int priority, const char *fmt,
                      va_list ap)
{
int errno_save;
char buf[MAXLINE];

  errno_save = errno; /*value caller might want printed*/
vsnprintf(buf, MAXLINE, fmt, ap);
if(errnoflag)
snprintf(buf + strlen(buf), MAXLINE - strlen(buf), ": %s",
    strerror(errno_save));
strcat(buf, "n");
if(log_to_stderr){
fflush(stdout);
fputs(buf, stderr);
fflush(stderr);
}
else{
syslog(priority, buf);
}
}

|
if(dp = opendir(argv[1]) == NULL)
>> 
if( (dp = opendir(argv[1])) == NULL)

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • secureCRT下Linux终端汉字乱码解决方法
  • VS2005解决方案管理器中不显示解决方案节点的解决办法
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 有高手能破解RAR的密码吗,至今没有找到人能解决?(先只给10分意思意思,若解决,至少给解决的人500分!说话算话!)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • c/c++开源软件 iis7站长之家
  • window.onload事件覆盖掉body onload事件(window.onload和html body onload事件冲突)解决办法
  • 奇怪,怎么“已解决”问题只有4页(10/17日之后的),以前的已解决问题到哪里看?
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 解决!解决!求助如何安装多系统!
  • andriod中UIScrollView无法正常滚动的解决方法
  • 解决多级索引速度慢的问题可否像解决多级页表那样使用TLB?
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • Liunx命令tar压缩出现如下错误该怎么解决?急需解决!感谢
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • 求数据库解决方案===求数据库解决方案
  • windows server2008上PowerBuilder程序系统错误解决方法
  • MYSQL安装时解决要输入current root password的解决方法
  • Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
  • 解决oracle用户连接失败的解决方法
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • 呵呵,前段时间Ubuntu服务器版的问题总算解决了,解决方法就是重新安装桌面版-_-!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,