在g_callback GTK + C之后更新主循环中的变量

时间:2015-10-19 12:02:45

标签: c callback gtk gtk2

我想更新对g_callback中的指针变量所做的修改,但我不知道怎么样,你能帮我吗? (我是GTK +和C语言的新手......)

void modify_string(char *str)
{
  char *new_str = "Something new";
  str = new_str;
}

int main(int argv, char **argc)
{
  char *str = NULL;
  gtk_init(&argc, &argv);
  GtkWidget *screen = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  init_main_window(screen);
  GtkWidget *button = gtk_button_new_with_label("Open");

  /* ... */

  g_signal_connect(G_OBJECT(screen), "destroy", G_CALLBACK(gtk_main_quit), NULL);
  g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(modify_string), str);
  printf("%s\n", str);
  gtk_main();

  return EXIT_SUCCESS;
}

问题是它打印“(null)”而不是“Something new”,你有什么想要更新我的字符串吗?

编辑:我不明白,谢谢!

1 个答案:

答案 0 :(得分:-1)

您没有为new_str分配任何空间。并且您正在为str分配一个局部变量,当例程结束并且范围丢失时,该变量将丢失。尝试编写修复这两个问题的例程。