可能重复:
为什么将(指向非 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 的原因。那么这里不就发生了吗?