You need to enable JavaScript to run this app. 编译C语言首个GTK+程序出现GTypeDebugFlags等弃用警告如何解决
优惠活动
大模型
产品
解决方案
定价
更多

编译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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 04:27:00