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ですか?