C 更新函数之间的整数

C 更新函数之间的整数,c,gtk2,C,Gtk2,我有一个GTK2的大代码,其中我在更新整数的值时遇到了问题(在本例中是trigan,它在主体中定义并回调给我这个问题的两个函数) 我打算按下RUN按钮,调用函数RUN,该函数开始实时显示数字。然后,当文本运行时,我将按下STOP按钮调用函数STOP,将trigan的值更新为1 下面是一段有问题的代码: void STOP(GtkWidget *widget, GObject *context_object_stp) { GtkEntry *trigan = g_object_get_da

我有一个GTK2的大代码,其中我在更新整数的值时遇到了问题(在本例中是trigan,它在主体中定义并回调给我这个问题的两个函数)

我打算按下RUN按钮,调用函数RUN,该函数开始实时显示数字。然后,当文本运行时,我将按下STOP按钮调用函数STOP,将trigan的值更新为1

下面是一段有问题的代码:

void STOP(GtkWidget *widget, GObject *context_object_stp) 
{

  GtkEntry *trigan = g_object_get_data (context_object_stp, "trigan");


  trigan=1;


}
void RUN(GtkWidget *widget, GObject *context_object) 
{
    GtkEntry *buffer= g_object_get_data (context_object, "buffer");
    GtkEntry *wins = g_object_get_data (context_object, "wins");
    GtkEntry *trigan = g_object_get_data (context_object, "trigan");



    GtkWidget  iter;
    GtkTextIter iterscrll;
    GtkTextMark *mark;

    mark = gtk_text_buffer_get_insert(buffer);
    gtk_text_buffer_get_iter_at_mark(buffer, &iterscrll, mark);



    gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0);
    trigan=0;
    int i=0;
    int k=0;

    for (i=0; i<90; i=i+1)
    {
     while (trigan==1)
     {

     }
     gchar * stuff = g_strdup_printf("%d"" [%d]\n", i, trigan);
     /* Inserts buffer at position iter. */
     gtk_text_buffer_insert(buffer, &iter, stuff, -1);
     g_free(stuff);

    /* Forcing. */
    while (gtk_events_pending())
    gtk_main_iteration();
    /* Scrolls text_view the minimum distance such that mark is contained within the visible area of the widget. */
    gtk_text_view_scroll_mark_onscreen(GTK_TEXT_VIEW(wins), mark);

     for (k=0; k<50000000; k=k+1)
     {
         k++;
     }
     k=0;
    }
}
应该“停止”函数运行,但它没有


救命啊

是的,您的假设是正确的,但请看一下您的代码摘录:

triga=0;
    int i=0;
    int k=0;

    for (i=0; i<90; i=i+1)
    {
     while (triga==1)
     {

     }
triga=0;
int i=0;
int k=0;

对于(i=0;i)我的逻辑是,如果trigan=1,那么(trigan==1)应该“停止”函数运行如果你的代码中真的存在这样一个循环,我肯定会的。
trigan
vs
triga
。经验教训:使用合理的变量名。我犯了一个错误,转录主代码时变量名始终是trigan。我编辑了这篇文章。谢谢。我犯了一个错误,转录了主代码,所有代码中的变量名我是trigan。我已经编辑了这篇文章。谢谢。
triga=0;
    int i=0;
    int k=0;

    for (i=0; i<90; i=i+1)
    {
     while (triga==1)
     {

     }