使用 GTK+2 时收到“格式不是字符串文字且没有格式参数”警告
Getting a “format not a string literal and no format arguments” warning while using GTK+2
我收到这样的错误:
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);
}
我该如何解决?
答案很简单。
您必须将 "%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
认为是不安全的。
您可以在此处阅读更多相关信息:
warning: format not a string literal and no format arguments
我收到这样的错误:
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);
}
我该如何解决?
答案很简单。
您必须将 "%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
认为是不安全的。
您可以在此处阅读更多相关信息:
warning: format not a string literal and no format arguments