Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
得了一个“a”;初始值设定项元素不是编译时;使用Clang 3.0编译coreutils库时出错_C_Compilation_Clang - Fatal编程技术网

得了一个“a”;初始值设定项元素不是编译时;使用Clang 3.0编译coreutils库时出错

得了一个“a”;初始值设定项元素不是编译时;使用Clang 3.0编译coreutils库时出错,c,compilation,clang,C,Compilation,Clang,下面的C代码是GNUCoreutils(单击)中lib的一部分 我在使用Clang(3.0版)时遇到如下编译错误: localecove.c:73:5:错误:初始值设定项元素不是编译时 不变的 (注意,第73行用注释表示) 我很困惑,怎么了!?还是编译器出了问题 #include <limits.h> struct lconv * localeconv (void) { static /*const*/ struct lconv result = {/*Line

下面的C代码是GNUCoreutils(单击)中lib的一部分

我在使用Clang(3.0版)时遇到如下编译错误:

localecove.c:73:5:错误:初始值设定项元素不是编译时 不变的

(注意,第73行用注释表示)

我很困惑,怎么了!?还是编译器出了问题

#include <limits.h>

struct lconv *
localeconv (void)
{
    static /*const*/ struct lconv result = 
    {/*Line 73*/ 
        /* decimal_point */ ".",
        /* thousands_sep */ "",
        /* grouping */ "",
        /* mon_decimal_point */ "",
        /* mon_thousands_sep */ "",
        /* mon_grouping */ "",
        /* positive_sign */ "",
        /* negative_sign */ "",
        /* currency_symbol */ "",
        /* frac_digits */ CHAR_MAX,
        /* p_cs_precedes */ CHAR_MAX,
        /* p_sign_posn */ CHAR_MAX,
        /* p_sep_by_space */ CHAR_MAX,
        /* n_cs_precedes */ CHAR_MAX,
        /* n_sign_posn */ CHAR_MAX,
        /* n_sep_by_space */ CHAR_MAX,
        /* int_curr_symbol */ "",
        /* int_frac_digits */ CHAR_MAX,
        /* int_p_cs_precedes */ CHAR_MAX,
        /* int_p_sign_posn */ CHAR_MAX,
        /* int_p_sep_by_space */ CHAR_MAX,
        /* int_n_cs_precedes */ CHAR_MAX,
        /* int_n_sign_posn */ CHAR_MAX,
        /* int_n_sep_by_space */ CHAR_MAX
    };

    return &result;
}
#包括
结构lconv*
localeconv(void)
{
静态/*const*/struct lconv结果=
{/*第73行*/
/*小数点*/“,
/*千年9月*/“,
/*分组*/“”,
/*单小数点*/“”,
/*周一至九月*/“”,
/*mon_分组*/“”,
/*正号*/“”,
/*负号*/“”,
/*货币符号*/“”,
/*分形数字*/字符最大值,
/*p_cs_在*/CHAR_MAX之前,
/*p_sign_posn*/CHAR_MAX,
/*p_sep_by_space*/CHAR_MAX,
/*n\u cs\u在*/CHAR\u MAX之前,
/*n_sign_posn*/CHAR_MAX,
/*n_sep_by_space*/CHAR_MAX,
/*国际货币符号*/“”,
/*整数分位数*/字符最大值,
/*int_p_cs_在*/CHAR_MAX之前,
/*整数p符号posn*/CHAR\u MAX,
/*int_p_sep_by_space*/CHAR_MAX,
/*int\u n\u cs\u在*/CHAR\u MAX之前,
/*整数符号/字符最大值,
/*int_n_sep_by_space*/CHAR_MAX
};
返回和结果;
}

使用
-E
选项运行预处理器并检查输出。很可能
CHAR\u MAX
扩展为非常量表达式。
lconv
的成员类型似乎不同。我认为如果发生这种类型的转换,错误消息就会被释放出来。代码假定成员按特定顺序排列,但显然不是,根据ISO C标准,不必这样。您可以使用指定的初始值设定项来修复此问题,或者尝试在上游修复此问题。@BLUEPIXY,您是对的。在此错误之前,我发现了一个警告:localeconv.c:83:25:警告:不兼容的整数到指针转换使用“int”类型的表达式初始化“char”;/分形数字*/字符最大值,