2021年12月30日木曜日

gthreadの使い方が変わったらしい(C言語)

 最近,卒研生に測定用プログラムのメンテナンスや改良を任せようと思っているのですが,gtkやgthreadの情報があまり日本語で公開されていないので,牛の歩みで進めています。


まず一番困ったのが,最近になって以下のような二つのwarningが出てくるようになったことです。


main.c:503:3: warning: 'g_thread_init' is deprecated [-Wdeprecated-declarations]


main.c:580:12: warning: 'g_thread_create' is deprecated: Use 'g_thread_new'


GLibの仕様変更のようです。

一つ目に関しては,どうやらg_thread_initとはもう書かなくてよくなったようで,単純に削除でOKでした。

二つ目に関しては,本文中では


  thread = g_thread_create ( thread_func, (gpointer)label3, FALSE, &error );


と書いているのですが,これをそのままg_thread_newと書き換えただけではダメみたいです。

オンラインドキュメントを見てみると,

g_thread_new ()

GThread *           g_thread_new                        (const gchar *name,
                                                         GThreadFunc func,
                                                         gpointer data);


と書いてあり,引数が3つになって,しかも第一引数が謎のスレッド名。

とりあえず謎のスレッド名のところは適当に名前をつけて,第二引数に関数名,第三引数に関数に渡すパラメータとして書き直したところ無事にwarningが消えました。


0 件のコメント:

コメントを投稿