编译C语言首个GTK+程序出现GTypeDebugFlags等弃用警告如何解决
问题原因说明
你当前遇到的是编译警告而非编译错误,你的代码逻辑没有问题,编译已经完成,生成的bessewellapp可执行文件可以正常运行。
这些警告的触发原因是你使用的GTK 2版本已经停止官方维护,新版系统中的glib、gtk依赖库将GTK 2内部使用的旧API标记为了废弃状态,警告来自GTK 2的头文件本身,和你编写的业务代码无关。
解决方案
你可以根据自己的需求选择以下任意一种处理方式:
- 若你只是暂时跟着旧教材学习GTK 2的基础用法,不需要处理版本兼容问题,只需在编译命令中添加参数屏蔽废弃声明警告即可,修改后的编译命令如下:
新增的gcc -o bessewellapp bessewellapp.c -Wall `pkg-config --cflags --libs gtk+-2.0` -export-dynamic -Wno-deprecated-declarations-Wno-deprecated-declarations参数会专门屏蔽这类API废弃提示,不会影响程序的正常功能。 - 若你打算长期学习GTK开发,建议直接改用仍在维护的GTK 3/GTK 4版本,无需修改你当前的测试代码,只需将编译命令中的
gtk+-2.0替换为gtk+-3.0即可,编译时不会再出现上述废弃警告。 - 额外优化建议:你当前的代码没有绑定窗口关闭事件,点击窗口右上角的关闭按钮后,程序主循环不会退出,会一直在后台运行。你可以在
gtk_widget_show (win);代码前添加一行事件绑定逻辑:
即可实现关闭窗口时自动终止程序。g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
内容的提问来源于stack exchange,提问作者nehemuel
相关产品推荐
相关产品推荐

