标题:某行代码为何编译通不过
只看楼主
chaw899
Rank: 2
等 级:禁止访问
帖 子:48
专家分:11
注 册:2018-11-29
结帖率:88.89%
已结贴  问题点数:10 回复次数:1 
某行代码为何编译通不过
编译环境Mingw,gcc -c test.c报错,去掉注释的那行可以通过。是编译器太老的关系吗?

#include <stdio.h>
#include <stdlib.h>

// #ifndef HAVE_ERRX
static inline void errmsg(char doexit, int excode, char adderr, const char *fmt, ...);
int colormode_or_err(const char *str, const char *errmsg);

#define errx(E, FMT...) errmsg(1, E, 0, FMT)

// #endif

//#ifndef HAVE_ERR_H

static inline void errmsg(char doexit, int excode, char adderr, const char *fmt, ...)
{
   
    fprintf(stderr, "%s: ", "program_invocation_short_name.\n");
    if (fmt != NULL) {
//        va_list argp;
//        va_start(argp, fmt);
//        vfprintf(stderr, fmt, argp);
//        va_end(argp);

        if (adderr)
            fprintf(stderr, ": ");
    }
    if (adderr)
        fprintf(stderr, "%m");
    fprintf(stderr, "\n");
    if (doexit)
        exit(excode);
        
}

int colormode_or_err(const char *str, const char *errmsg)
{
    const char *p = str && *str == '=' ? str + 1 : str;
    int colormode;

    colormode = colormode_from_string(p);
    if (colormode < 0)
        errx(EXIT_FAILURE, "%s: '%s'", errmsg, p);     // 这行为什么编译通不过啊
    return colormode;
}
搜索更多相关主题的帖子: 编译 char int const str 
2019-07-13 20:29
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
你代码不全(起码colormode_from_string就没有定义),又不肯贴编译给出的错误信息。

errx(EXIT_FAILURE, "%s: '%s'", errmsg, p);
这个宏展开成 errmsg(1,EXIT_FAILURE,0,"%s: '%s'", errmsg, p);
但在 int colormode_or_err(const char *str, const char *errmsg) 这个函数中 errmsg 是 const char* 类型。
2019-07-14 11:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495833-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064237 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved