2016-03-31 14 views
-1

私はGTK2という大きなコードを持っています。このコードでは、整数の値を更新するのに問題があります(この場合trigan、その本体で定義され、2つの関数にコールバックされます)。私にこの問題を与える)。関数間の整数の更新

私はリアルタイムで数字の表示を開始する関数RUNを呼び出すボタンRUNを押す予定です。その後、私は1ここ

にtriganの値を更新、機能停止を呼び出すSTOPボタンを押しますテキストその実行は、問題のコードの一部である間:

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; 
    } 
} 

私のロジックはその聖霊降臨祭が言うには、 trigan = 1のこの値

while (trigan==1) 
    { 

    } 

は、関数RUNを「停止」する必要がありますが、そうではありません。

お願いします!

+0

「私の論理は、その聖霊降臨祭triganのこの値は= 1しばらく(trigan == 1)と言います関数を "停止"する必要があります "実際にこのようなループが存在する場合はあなたのコード。 「トリガン」対「トリガ」。教訓:分かりやすい変数名を使用する。 – Lundin

+0

私は主なコードを間違えて転記しました。すべての瞬間の変数名はtriganです。私は投稿を編集しました。ありがとうございました。 – Keles

答えて

0

はい、あなたの仮定が正しいですが、あなたのコードのこの抜粋を見てみましょう:

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

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

    } 

あなたが見るように、TRIGAは、しばらく前に、間にmanipoulated決して、定義されて0に割り当てられています...その条件中(TRIGA == 1)はfalseです...その理由である

..

+0

私は主なコードを間違えて転記しました。すべての瞬間の変数名はtriganです。私は投稿を編集しました。ありがとうございました。 – Keles

関連する問題