首页
社区
课程
招聘
未解决 [求助]某行代码为何编译通不过
发表于: 2019-7-13 20:26 2033

未解决 [求助]某行代码为何编译通不过

2019-7-13 20:26
2033
编译环境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;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2019-7-13 20:41 被limee编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 506
活跃值: (119)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
2
参数const char *errmsg和上面定义的内联函数static inline void errmsg重名了,改下名
2019-7-13 20:54
0
雪    币: 1176
活跃值: (1269)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
3
fatykrch 参数const char *errmsg和上面定义的内联函数static inline void errmsg重名了,改下名
并没有什么用 这位兄弟基本语法都不熟。。。。
2019-7-13 20:59
0
雪    币: 4513
活跃值: (4488)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我勒个去,你那个参数 和 函数 名字相同 int colormode_or_err(const char *str, const char *errmsg) //这里你已经有一个函数叫 errmsg 了

//修改1

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


修改2

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;
}




就可以编译通过了

2019-7-13 22:54
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
是的,又是一个低级错误啊。
2019-7-14 00:12
0
游客
登录 | 注册 方可回帖
返回
//