为什么从非const隐式转换为const发生在这里? [重复](Why does implici

2019-09-22 16:39发布

可能重复:
为什么不是它合法的(指针指向非const)转换成(指针指向一个const)
在C型双指针常量,正确性警告

我传递一个gchar**到g_key_file_set_string_list一个希望将const gchar * const identifier []

/* this function is part of the GLib library */
void g_key_file_set_string_list(GKeyFile *key_file,
                                const gchar *group_name,
                                const gchar *key,
                                const gchar * const list[],
                                gsize length);

const gchar **terms = malloc(sizeof(gchar*) * count);
...
...
g_key_file_set_string_list(<something>, <something>, <something>,
                           terms, count);

和GCC 4.7.1与选项-std=c99 -pedantic给我这个

警告:从兼容的指针类型传递“g_key_file_set_string_list”的参数4

注意:预期 '常量gchar * const的*',但参数的类型为 'gchar **'

AFAIK,无论是在C和C ++,转化率从非const为const是隐式的,这是我们看到类似的标准功能的原因strcpy采取常量ARGS。 那么不会在这里发生?

文章来源: Why does implicit conversion from non-const to const not happen here? [duplicate]