【发布时间】:2014-06-16 17:39:43
【问题描述】:
我在用 C 语言编译程序时遇到问题。我想使用以下代码运行简单的文件选择器:
#include <gtk/gtk.h>
int main( int argc, char *argv[])
{
GtkWidget *dialog;
gtk_init(&argc, &argv);
dialog = gtk_file_chooser_dialog_new ("Open File",parent_window,action,_("_Cancel"),GTK_RESPONSE_CANCEL,_("_Open"),GTK_RESPONSE_ACCEPT,NULL);
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{
char *filename;
GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
filename = gtk_file_chooser_get_filename (chooser);
open_file (filename);
g_free (filename);
}
gtk_widget_destroy (dialog);
gtk_main();
return 0;
}
我使用该命令编译它:
gcc -o s5 s5.c `pkg-config --libs --cflags gtk+-3.0`
我得到了那个错误:
s5.c:10:39: error: ‘parent_window’ undeclared (first use in this function)
parent_window,
^
s5.c:10:39: note: each undeclared identifier is reported only once for each function it appears in
s5.c:11:39: error: ‘action’ undeclared (first use in this function)
action,
^
s5.c:16:39: warning: passing argument 4 of ‘gtk_file_chooser_dialog_new’ makes pointer from integer without a cast [enabled by default]
NULL);
^
In file included from /usr/include/gtk-3.0/gtk/gtk.h:99:0,
from s5.c:1:
/usr/include/gtk-3.0/gtk/gtkfilechooserdialog.h:63:12: note: expected ‘const gchar *’ but argument is of type ‘int’
GtkWidget *gtk_file_chooser_dialog_new (const gchar *title,
^
我尝试对 GTK+ 2 做同样的事情,但也遇到了同样的错误;/
【问题讨论】:
-
您的代码示例中在哪里声明了
parent_window? -
就此而言,
action是在哪里声明的? -
(有修辞,顺便说一句......我只是重新告诉你编译器已经告诉你的内容。)这两个问题的答案都是没有声明任何变量......这是为什么编译器会抱怨,以及为什么您会看到其中一些错误。
-
修复了问题。程序需要 2 个方法时出现问题。
-
您可以发布您的固定代码作为新答案吗?