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

为什么我的这段代码编译不过去?那位大哥帮帮忙!谢谢!

    来源: 互联网  发布时间:2014-12-25

    本文导语:  /* *liberr.h */ #ifndef LIBERR_H #define LIBERR_H #include  #define MAXLINELEN 4096 void err_ret(const char *fmt, ...); void err_quit(const char *fmt, ...); void log_ret(char *logfile, const char *fmt, ...); void log_quit(char *logfile, const char *fmt, ...)...

/*
*liberr.h
*/
#ifndef LIBERR_H
#define LIBERR_H

#include 
#define MAXLINELEN 4096

void err_ret(const char *fmt, ...);
void err_quit(const char *fmt, ...);
void log_ret(char *logfile, const char *fmt, ...);
void log_quit(char *logfile, const char *fmt, ...);
void err_prn(const *fmt, va_list ap, char *logfile);

#endif LIBERR_H


/*
*liberr.c
*/
#include 
#include 
#include 
#include 
#include "liberr.h"

void err_ret(const char *fmt, ...)
{
        va_list ap;

        va_start(ap, fmt);
        err_prn(fmt, ap, NULL);
        va_end(ap);
        return;
}

void err_quit(const char *fmt, ...)
{
        va_list ap;
        va_start(ap, fmt);
        err_prn(fmt, ap, NULL);
        va_end(ap);
        exit(EXIT_FAILURE);
}

void log_ret(char *logfile, const char *fmt, ...)
{
        va_list ap;

        va_start(ap, fmt);
        err_prn(fmt, ap, NULL);
        va_end(ap);
        return;
}

void log_quit(char *logfile, const char *fmt, ...)
{
        va_list ap;

        va_start(ap, fmt);
        err_prn(fmt, ap, NULL);
        va_end(ap);
        exit(EXIT_FAILURE);
}

extern void err_prn(const char *fmt, va_list ap, char *logfile)
{
        int save_err;
        char buf[MAXLINELEN];
        FILE *plf;

        save_err = errno;
        vsprintf(buf, fmt, ap);
        sprintf(buf + strlen(buf), ": %s", strerror(save_err));
        strcat(buf, "n");
        fflush(stdout);

        if(logfile != NULL)
                if((plf = fopen(logfile, "a")) != NULL)
                {
                        fputs(buf, plf);
                        fclose(plf);
                }
                else

                        fputs("failed to open log filen", stderr);
         else
                fputs(buf, stderr);

        fflush(NULL);
        return;
}



[wb@webmail wb]$ gcc -c liberr.c -o liberr.o

错误信息如下:
In file included from liberr.c:8:
liberr.h:16:8: warning: extra tokens at end of #endif directive
liberr.c: In function `err_ret':
liberr.c:15: warning: passing arg 1 of `err_prn' from incompatible pointer type
liberr.c: In function `err_quit':
liberr.c:25: warning: passing arg 1 of `err_prn' from incompatible pointer type
liberr.c:27: `EXIT_FAILURE' undeclared (first use in this function)
liberr.c:27: (Each undeclared identifier is reported only once
liberr.c:27: for each function it appears in.)
liberr.c: In function `log_ret':
liberr.c:35: warning: passing arg 1 of `err_prn' from incompatible pointer type
liberr.c: In function `log_quit':
liberr.c:45: warning: passing arg 1 of `err_prn' from incompatible pointer type
liberr.c:47: `EXIT_FAILURE' undeclared (first use in this function)
liberr.c: At top level:
liberr.c:51: conflicting types for `err_prn'
liberr.h:14: previous declaration of `err_prn'
[wb@webmail wb]$



|
你的liberr.h有错误,正确的如下:
*******************
#ifndef LIBERR_H
#define LIBERR_H

#include 

#define MAXLINELEN 4096
#define EXIT_FAILURE -1 //这里预定义EXIT_FAILURE 

void err_ret(const char *fmt, ...);
void err_quit(const char *fmt, ...);
void log_ret(char *logfile, const char *fmt, ...);
void log_quit(char *logfile, const char *fmt, ...);
void err_prn(const char  *fmt, va_list ap, char *logfile);
 //这里的第一个参数的类型为const char * ,不是const * 


#endif

|
EXIT_FAILURE没有定义

|
缺文件,全传上来

    
 
 

您可能感兴趣的文章:

  • 大家好!我最近一个浏览器的原代码不知道怎么编译运行。。请帮帮忙?
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常. iis7站长之家
  • 现急需bmp文件转换成jpg文件的java源代码,请高手们帮帮忙,分数可再加。
  • 一个简单的代码问题,请大虾进来帮帮忙!急!
  • 熟悉C++和Java的高手请务必帮帮忙,我现在要将一种语言的源代码改成另一种
  • Linux汇编代码...各位帮帮忙
  • socket编程 总是accept error 新手入门 希望大家帮帮忙 具体代码如下
  • 各位老师帮帮忙,帮我看下服务端代码
  • 把一个表的记录显示在列表框中,代码出错,请各位帮帮忙,谢谢!!!
  • 进来帮帮忙....帮我改程序OK?..关于聊天室功能.里面有源代码.....
  • (高分)谁写过linux下的ftp客户端(访问linux服务器),请帮帮忙!有代码也行!
  • 代码比较长, 但是编译连接都通过了,就是结果不对。 希望各位帮帮忙, 时间紧急啊。老师要完成的作业
  • 我用java做的applet站内搜索程序,不能搜索中文,那位大虾能帮帮我?代码如下:
  • 大家帮帮菜鸟,看我这几行代码是怎么回事!
  • 大虾们,快来帮帮我把,这段代码怎么了?
  • 求有关socket等通讯方面的源代码,以供参考,希望大家帮帮我!谢谢
  • 关于把<转化成<的问题帮我看一下代码!!帮帮
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下有没有能编译出16bit代码的C语言编译器?
  • windows下如何把汇编代码和C代码编译成一个程序呢?
  • jbuilder4.0 企业版能否把代码编译成在特定平台上运行的代码
  • 使用gcc编译器进行代码编译出来的程序是否遵循gpl协议
  • 问:用g++编译通过的代码,为啥用gcc不可以?(附代码)
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 怎样看到java程序经过编译后的代码内容(bytecode的)或者在bytecode在JVM执行时JVM所解析的代码
  • 使用 C# 动态编译代码和执行的代码
  • 如何编译一个包含用户级代码和内核级代码的程序
  • 有人说用vc++写的程序,代码可以直接拿到linux下找编译器,就可以编译,是真的吗?
  • 谁能告诉我早期LINUX内核的源代码和C编译器的源代码,哪能找到!谢谢!要多少分都给!
  • linux 代码修改后编译
  • 刚下载一个内核源代码,怎样将它编译出来,然后安装运行呢?
  • 编译代码结构问题
  • 二进制安装和源代码编译安装,有什么区别?
  • 如何重新编译修改后的Linux内核源代码?
  • 如何把java代码编译成*.exe的应用程序
  • 关于《GNU Emacs Lisp编程入门》这本书里所说的“字节编译代码”是什么东东?
  • 求助 程序中添加互斥锁代码后编译怎么通不过 ?
  • 求JAVA编译器的源代码!
  • javascript 添加到收藏夹和书签代码示例
  • 在JBuilder中,为什么编写的代码中,当代码出现关键字时,后面的部分代码就移位了,当在有关键字的那些代码行进行选择时,也会出现鼠标位
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 为什么两行代码间不加入其他代码就崩溃,而加入了日志代码后就不崩溃?
  • JSP中清空cookie代码参考
  • 在ubuntu8.10 新立得中安装anjuta,为什么没有代码提示功能,怎么做才有,还有自动代码补全和代码提示有什么区别,
  • Python获取网页编码的方法及示例代码
  • 到底怎么样的代码算是有效代码?请教了。。
  • HTML网页中的html body onload自动跳转方法介绍及自动跳转代码示例
  • 如果要研究源代码以提高自己,哪一个开放源代码的软件比较合适?
  • php通过socket_bind()设置IP地址代码示例


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3