为什么使用 GLib 函数?

2023-12-24

在使用 C 和 GTK+ 编程时,为什么使用“更好”g_strdup_printf, g_free, g_strcmp0等等...以及其他 GLib 函数?


一般来说,GLib 的目的是一个实用程序和可移植性库。这些本身就是考虑使用它的理由。

您提到的特定函数都在其 C 标准库变体之上提供了一些额外的功能:

  • g_strdup_printf就好像sprintf,但实际上会为您分配缓冲区,并让您无需猜测缓冲区应该有多大。 (返回值应该是g_free'd.)
  • g_free就好像free,但检查 NULL 指针。
  • g_strcmp0就好像strcmp,但将 NULL 指针视为空字符串,因此将其排在前面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用 GLib 函数? 的相关文章

  • 如何指定CMAKE外部项目的编译器?

    我使用ExternalProject Add 包含一个外部项目 我想要的是能够做到 cmake DCMAKE CXX COMPILER
  • C 中的分段错误

    我需要用 0 填充二维数组 但编译后的程序会出现此错误 怎么了 int main int vert 1001 1001 int hor 1001 1001 int dudiag 1416 1416 int uddiag 1416 1416
  • 对相当大的整数的大集合的操作的快速实现

    描述 我实现了以下类 LabSetInt64 参见下面的代码 这里的目标是尽可能快地操作大量大整数 最多 10M 的值 我的主要要求集中在 至关重要 尽快获取集合的大小 基数 重要 能够非常快速地迭代一组集合 所以 从下面的实现开始 我还有
  • C++17 中带有 noexcept 的 std::function

    在 C 17 中noexcept 已添加到类型系统中 http www open std org jtc1 sc22 wg21 docs papers 2015 p0012r1 html void r1 void f noexcept f
  • 将内核链接到 PTX 函数

    我可以使用 PTX 文件中包含的 PTX 函数作为外部设备函数 将其链接到另一个应调用该函数的 cu 文件吗 这是另一个问题CUDA 将内核链接在一起 https stackoverflow com questions 20636800 c
  • 在 C 中声明和初始化数组

    C 有没有办法先声明然后初始化数组 到目前为止 我一直在初始化一个这样的数组 int myArray SIZE 1 2 3 4 但我需要做这样的事情 int myArray SIZE myArray 1 2 3 4 在 C99 中 您可以使
  • CMake - 未定义参考

    我正在尝试将 gtest 包含到我的项目中 问题是我在 GTest 中收到未定义的引用错误 我正在尝试在 Gtest 中测试 Node 类 在节点的构造函数中 我使用类记录器 尽管我已将库记录器添加到 gtest target 中 但我仍然
  • ResourceDictionary 源中的 Uri 语法(通用 Windows 平台)

    我正在迁移我的Windows 8 1项目到Windows 10 通用 Windows 平台 这时我被拦住了ResourceDictionary改变在UWP 为了简单起见 我有包含 2 个项目的 Windows 8 1 解决方案 App pr
  • 了解 MVC-5 身份

    我创建了一个新的ASP NET MVC 5申请与Individual User Accounts然后更新了所有的Nuget packages在解决方案中 现在我尝试遵循一些教程中显示的一些指南 但遇到了一些问题 第一个是一个名为Applic
  • “volatile void function( ... )” 做了什么?

    我见过从语法角度来看 C 函数中 volatile 关键字有多少种用法 https stackoverflow com questions 7643528 how many usage does volatile keyword have
  • 最小对的总和

    Given 2N点 in a 2D plane 你必须将它们分组为N pairs使得所有对的点之间的距离的总和是最小可能值 所需的输出只是总和 换句话说 如果a1 a2 an分别是第一对 第二对 和第 n 对点之间的距离 则 a1 a2 a
  • 复杂的 C 声明

    我刚刚在互联网上浏览了一些代码 发现了这个 float foo SIZE SIZE 我如何阅读这份声明 是否有一套特定的规则来阅读如此复杂的声明 我有一段时间没做这个了 从 开始foo然后向右走 float foo SIZE SIZE fo
  • Windows Phone HttpClient PostAsync 挂起且无响应

    我在拨打电话时遇到问题HttpClientWP 应用程序的 post 方法 PostAsync总是挂起并且不给出任何响应 当我从 WPF 应用程序中尝试时 相同的代码可以工作 这是我正在做的事情 服务器Web API代码 public cl
  • C++ std:.auto_ptr 或 std::unique_ptr (支持多个编译器,甚至是旧的 C++03 编译器)?

    我正在尝试更新一些 C 代码 我想转向更现代的代码 c 11 但我仍然需要使用一些较旧的编译器 兼容 c 03 来编译代码 因为支持的平台限制 我知道在 C 11 编译器中 std auto ptr 已被弃用 但由于较旧的编译器支持 我不能
  • MPI_Gatherv:根数组中收到的垃圾值

    我正在尝试实施MPI Gatherv函数于C 根据我的程序 包括 root 在内的每个进程都应该创建一个大小等于 进程的等级 1 这将在所有单元格中保持进程的等级 然后这个本地数组被收集到根的 rcv array 中 不知何故 我得到了垃圾
  • 使用std::begin()、std::end()将ArrayXd转换为stl向量,

    在我看来我应该能够使用std begin and std end 转换ArrayXd to std vector
  • RabbitMQ + Windows + LDAP 无需发送密码

    我正在尝试在 Windows 7 上使用 RabbitMQ 3 6 2 进行 LDAP 身份验证 授权 我已经在应用程序发送用户名 密码的情况下进行了基本身份验证 但密码位于我需要弄清楚如何进行的代码中避免 有没有人在不提供密码的情况下成功
  • 即使对于新上下文,OnModelCreating 也仅调用一次

    我有多个相同但内容不同的 SQL Server 表 在编写代码优先 EF6 程序时 我尝试为每个程序重用相同的数据库上下文 并将表名称传递给上下文构造函数 然而 虽然每次都会调用构造函数 但尽管每次都是从 new 创建数据库上下文 但 On
  • Selenium WebDriver 在按钮单击事件上无法正常工作。这里有什么问题呢?

    I am using following code to scrape data from a website I have following interface 这是 HTML div class es content div
  • 为什么 32 位 .NET 进程的引用类型的最小大小为 12 字节

    我正在读专业 Net 性能 https rads stackoverflow com amzn click com 1430244585本书有关参考类型内部结构的部分 它提到 对于 32 位 net 进程 引用类型具有 4 字节的对象头和

随机推荐

  • Jquery 1.5 ajax 在 POST 上作为 GET 数据发送

    抱歉我的英语 这不是我的出生语言 我有一个使用 codeigniter JqueryUI 的项目 我正在考虑将 JQuery 版本升级到 1 5 主要是因为我使用了大量的 ajax 调用 并且非常感谢速度上的任何改进 这是我的代码 在 JQ
  • MVC3 小数在编辑时截断为小数点后两位

    我正在使用 Razor 运行 MVC3 并注意到在编辑模式下小数值被截断为小数点后两位 我已经通过用显示格式注释我的属性来解决这个问题 这似乎不是一个很好的解决方案 因为我必须记住为我生成的每个新视图 或更新我的模板 执行此操作 我已经检查
  • 通过 USSD 发送消息需要什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Hibernate @SqlInsert 注释从 bean 获取空值而不是值

    我正在尝试使用 jpa hibernate 和 SQLInsert 注释插入 mysql 表 我尝试了一种更复杂的插入查询 直到我意识到基本的插入查询不起作用 bean 在下面 entityManager persist 或entityMa
  • 使用 urllib.request 和 json 模块在 Python 中加载 JSON 对象

    我在使模块 json 和 urllib request 在简单的 Python 脚本测试中协同工作时遇到问题 使用Python 3 5 代码如下 import json import urllib request urlData http
  • Swift 中的 Xcode 调试/崩溃报告是否已损坏?

    我使用 Swift 已经一年多了 随着 Xcode 的每一个新版本的发布 事情似乎只会变得更糟 是否只有在这里应用程序中的崩溃没有被正确报告 大多数时候只是SIGBRT or EXC BAD INSTRUCTION on main 是的 我
  • 使用 ElementTree 输出“未使用的”XML 命名空间

    我正在使用Python 3 2xml etree ElementTree 并尝试生成这样的 XML
  • 我如何选择 React Styled-Components 来生成物理 CSS 文件?

    我需要提供的 CSSstyled components输出到我的物理 CSS 文件中public css目录 export const MyComp styled div width 100 height 500px 与所有其他样式组件的样
  • 有没有一种简单的方法可以在 django 中获取用户的组名

    我尝试在以下代码的帮助下django contrib auth User and django contrib auth Group for g in request user groups l append g name 但这失败了 我收
  • Android 错误膨胀类 TextInputLayout

    我正在尝试使用TextInputLayout在我的 XML 中 我遇到了这个错误 java lang RuntimeException Unable to start activity ComponentInfo fr jechange m
  • 如何保证Spring bean的顺序?属性占位符问题

    我有一个非常简单且小型的服务 我正在使用 spring 为了配置数据库连接 我有一个 DataSource bean 并使用使用 properties 文件加载的 datasource properties 文件 协议是 Spring 在读
  • GraphQl 中的动态(唯一)对象

    我正在看 graphql 是否可以定义具有任意属性的对象 假设我有一些数据 例如 editOptions boxes 3 size width 23 height 32 color 434343 etc 这是在 box editOption
  • 资产 - “图像”、“声音”和“webkit”?

    我试图递归加载我放置在项目中 assets 文件夹中的所有资产 当我执行以下操作时 AssetManager assetManager getResources getAssets String assets assetManager li
  • Docker compose 分离模式不起作用

    问 如何在分离模式下运行 docker compose 我正在尝试在分离模式下运行 docker compose 但它运行后就会退出 但我可以使用 docker run 命令在分离模式下运行相同的图像 使用 docker run 命令运行图
  • Wicket.Ajax.Call.failure:解析响应时出错:需要对象

    我只是花了几个小时来调试这个问题 我在这里为其他人记录它 问题 当我尝试单击某个时出现以下错误AjaxLink在 Internet Explorer 中 Wicket ERROR Wicket Ajax Call failure Error
  • WPF故事板死亡

    C public partial class MainWindow Window Storyboard a new Storyboard int i public MainWindow InitializeComponent a Compl
  • 将 xs:string 转换为 jaxb 中的 java.util.UUID

    在jaxb中 如何将xsd中的字符串转换为java util UUID 是否有内置的数据类型转换器或者我必须创建自己的自定义转换器 This is much如果您从 Java 类开始并使用 JAXB 注释 那么事情会变得更容易 但是 要使用
  • 为什么我的 C++/CX 单元测试没有失败?

    我在 VS 2012 C CX 中有以下 Windows Store Metro Style 测试方法 这个成功了 就ok了 TEST METHOD TestMethod bool passed false concurrency even
  • 与旧系统的 CQRS

    我希望将一个具有清晰域模型的相对较新的基于 Web 的应用程序转换为更多 CQRS 风格的系统 我的新应用程序本质上是对现有旧系统的增强替代 我的组织中的现有系统共享一组通用数据库 这些数据库由整个公司孤岛中存在的无数应用程序 通过混沌方法
  • 为什么使用 GLib 函数?

    在使用 C 和 GTK 编程时 为什么使用 更好 g strdup printf g free g strcmp0等等 以及其他 GLib 函数 一般来说 GLib 的目的是一个实用程序和可移植性库 这些本身就是考虑使用它的理由 您提到的特