为什么在这里不会发生从非const到const的隐式转换?

时间:2012-09-20 23:13:33

标签: c pointers const implicit-conversion

  

可能重复:
  why isnt it legal to convert (pointer to pointer to non-const) to a (pointer to pointer to a const)
  Double pointer const-correctness warnings in C

我将gchar**传递给期待const gchar * const identifier []

g_key_file_set_string_list
/* 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);
带有选项-std=c99 -pedantic

和GCC 4.7.1给了我这个

  

警告:传递'g_key_file_set_string_list'的参数4   不兼容的指针类型

     

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

AFAIK,无论是在C和C ++中,从非const转换为const都是隐式的,这就是我们看到像strcpy这样的标准函数采用const args的原因。那不是在这里发生的吗?

0 个答案:

没有答案