使用GTK + 2时,获取“格式不是字符串文字而没有格式参数”警告

时间:2015-06-13 21:29:56

标签: c gcc gtk gcc-warning gtk2

我收到这样的错误:

warning: format not a string literal and no format arguments [-Wformat-security]
                                              GTK_BUTTONS_OK,
(const gchar*)message);
                   ^

因为这个功能:

static void show_message (gchar *message, GtkMessageType type) {
  GtkWidget *dialog = gtk_message_dialog_new(NULL, 0, type,
                                             GTK_BUTTONS_OK,
                                             message);
  gtk_dialog_run(GTK_DIALOG(dialog));
  gtk_widget_destroy(dialog);
}

我该如何解决?

1 个答案:

答案 0 :(得分:3)

答案很简单。

您必须将"%s"添加到gtk_message_dialog_new()函数的参数中,如下所示:

static void show_message (gchar *message, GtkMessageType type) {
  GtkWidget *dialog = gtk_message_dialog_new(NULL, 0, type,
                                             GTK_BUTTONS_OK, "%s",
                                             message);
  gtk_dialog_run(GTK_DIALOG(dialog));
  gtk_widget_destroy(dialog);
}

基本上,"%s"认为缺少gcc是不安全的。

您可以在此处详细了解: