Nick Treleaven nick.treleaven@btinternet.com wrote:
Jeff Pohlmeyer yetanothergeek@gmail.com wrote:
I can now create the name and label strings dynamically, but I get those "discards qualifiers" messages when I compile with warnings turned on.
Can you show some example code that produces the warnings, and your warning flags (I use at least -Wall and -Wextra)?
Here is an example that should give you a general idea of what I am trying to do. Note that I use "group" here instead of plugin_key_group[1] just to shorten lines for email...
/***************************/ #include "geany.h" #include "keybindings.h" #include "plugindata.h" #include "pluginmacros.h" PluginFields *plugin_fields; VERSION_CHECK(48) PLUGIN_INFO("ConstChar", "Warning", "0", "Jeff")
KeyBindingGroup plugin_key_group[1];
#define group plugin_key_group[1]
void init(GeanyData *data) { guint count=10; guint i; group.count=count; group.keys=g_new0(KeyBinding, count); for (i=0; i<count; i++) { group.keys[i].name=g_strdup_printf("key_%d",i); group.keys[i].name=g_strdup_printf("Label %d",i); } }
/* Destroy widgets */ void cleanup(void) { guint i; for (i=0; i<group.count; i++) { g_free(group.name); g_free(group.label); } g_free(group.keys); } /***************************/
The problem comes with calling g_free() on the const char* . You can get around it with a cast, but the warning comes back if you compile with -Wcast-qual .
- Jeff