k
タイプの変数const char *
と、プロトタイプを使用したglibの関数があります
void g_hash_table_replace(GHashTable *hash_table,
gpointer key,
gpointer value);
gpointer
単に次のように定義されます
typedef void* gpointer;
この場合、実際にk
はキーとして渡しても問題ないことはわかっていますがg_hash_table_replace
、gccでエラーが発生します
service.c:49:3: warning: passing argument 2 of ‘g_hash_table_replace’ discards ‘const’ qualifier from pointer target type [enabled by default]
/usr/include/glib-2.0/glib/ghash.h:70:13: note: expected ‘gpointer’ but argument is of type ‘const char *’
これはgcc4.6.0の場合です。4.5.0以前では、この警告を抑制するには(char *)への単純なキャストで十分でしたが、gccは「よりスマート」になっているようです。試しまし(char *)(void *)k
たが、変数が元々であったことはまだわかっていますconst
。strdup(3)
呼び出さずにこの警告を黙らせるための最良の方法は何k
ですか?