2

可能重复:
为什么将(指向非 const 的指针)转换为(指向 const 的指针)
在 C 中的双指针 const 正确性警告是不合法的

我将 a 传递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

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

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

4

0 回答 0