### glib常用库函数总结 #### 一、libc、glibc和glib的关系 ##### 1.1 glibc和libc - **libc**: 这是Linux下的标准C库,也称为ANSI C库,它是C语言的核心库之一,提供了一系列基本的函数来支持程序的运行。libc通常包含了C语言中的标准库函数,例如`<ctype.h>`中的字符测试和转换函数,`<errno.h>`中的错误处理宏,以及`<stdio.h>`、`<stdlib.h>`、`<string.h>`等头文件中的函数。 - **glibc**: GNU C Library(GNU C 库),是在Linux系统中最常见的C标准库实现。它不仅包含libc中的所有功能,还添加了一些额外的功能和扩展,以支持更多的高级特性,例如多线程和进程管理等。glibc是Linux操作系统的关键组成部分,它负责与硬件交互,并且提供了大量的函数来支持应用程序的开发。 ##### 1.2 glibc和glib - **glib**: 是一个跨平台的C语言函数库,主要用于GTK+库和GNOME桌面环境。glib并不是glibc的一部分,它们之间没有直接的隶属关系。glib提供了一系列更高级的功能和服务,如事件处理、线程管理、对象系统等,这些在glibc中并不直接提供。 - **不同之处**: - glibc更偏向于底层的操作系统功能,例如内存管理、文件I/O等。 - glib则更侧重于为上层的应用程序提供抽象化的服务和支持,例如事件循环、线程管理等。 ##### 1.3 其他说法 - glib虽然不是glibc的一部分,但两者都广泛应用于C语言程序开发中。glib提供了更高层次的抽象和工具,使得开发者能够更容易地编写出复杂的应用程序。 #### 二、Glib使用 ##### 2.2 基本类型定义 - glib定义了一系列的基本数据类型,例如`gboolean`(布尔型)、`gint`(整型)、`gfloat`(浮点型)等。这些类型通常比C语言的标准类型更具便携性,并且在不同的平台上保持一致的行为。 ##### 2.3 宏调试 - glib提供了一组宏来帮助开发者进行调试,例如`G_DEBUG_ENABLED`宏可以控制是否开启调试信息输出。 ##### 2.4 断言 - `g_assert()`是一个常用的断言函数,用于检查程序中的假设条件是否成立。如果条件不成立,则会引发错误或异常。 ##### 2.5 双向链表 - glib提供了双向链表的实现,通过`GList`结构体可以方便地进行链表操作,如插入、删除元素等。 ##### 2.6 单向链表 - 单向链表也是glib提供的一个数据结构,使用`GSList`结构体实现。相比双向链表,它的内存占用更少,但在某些操作上效率较低。 ##### 2.7 存储管理 - glib提供了一些内存管理的函数,如`g_malloc()`、`g_free()`等,这些函数提供了更安全、更易用的内存分配和释放方式。 ##### 2.8 计时器 - glib的计时器功能允许开发者设置定时任务,通过`g_timeout_add()`函数可以添加一个周期性的回调函数。 ##### 2.9 字符串处理 - glib提供了一系列字符串处理函数,如`g_strconcat()`用于字符串拼接,`g_strstr()`用于查找子字符串等。 ##### 2.10 数组 - glib提供了`GArray`结构体,用于处理动态数组的需求,支持数组的添加、删除、查询等操作。 ##### 2.11 IOchannel - `GIOChannel`是一个用于处理文件和其他输入输出流的类,可以用于读取或写入文件。 ##### 2.12 错误处理 - glib的错误处理机制主要通过`GError`结构体实现,可以捕获并处理错误信息。 ##### 2.13 系统环境相关函数 - glib提供了一系列函数来获取和设置系统的环境变量,例如`g_getenv()`和`g_setenv()`等。 ##### 2.14 加入事件、线程、对象系统的编译 - 要使用glib中的事件循环、线程管理等功能,需要在编译时链接glib的相关库。 ##### 2.15 object使用 - glib提供了一个简单的对象系统,通过`GObject`类可以实现对象的创建和管理,支持信号和槽机制。 ##### 2.16 超时定时器事件循环 - 通过`g_main_loop_run()`函数启动glib的事件循环,可以处理来自计时器或其他事件源的事件。 #### 三、提供上层建筑的基石-socket ##### 3.1 获取网络地址 - 在网络编程中,通过`g_socket_address_new_from_string()`函数可以从字符串中解析出网络地址。 ##### 3.2 获取的所有地址,创建socket - 使用`g_socket_new()`函数可以创建一个socket连接,然后使用`g_socket_connect_to_host()`函数连接到指定的主机。 ##### 3.3 socket参数设置 - 通过`g_socket_set_option()`函数可以设置socket的各种选项,例如TCP_NODELAY、SO_REUSEADDR等。 glib库提供了一套完整的工具集,覆盖了从基础类型定义到高级抽象的各个方面。对于希望开发跨平台C语言应用程序的开发者来说,glib无疑是一个非常有价值的工具库。
剩余38页未读,继续阅读
- 粉丝: 42
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java毕设项目之ssm基于Java的共享客栈管理系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于java的健身房管理系统的设计与实现+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于java和mysql的多角色学生管理系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于Java的图书管理系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于java的少儿编程网上报名系统+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于Java语言校园快递代取系统的设计与实现+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于jsp的精品酒销售管理系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于JSP的乡镇自来水收费系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于SSM的高校共享单车管理系统的设计与实现+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于ssm的人才招聘网站+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于SSM框架的购物商城系统+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于SSM框架的个人博客网站的设计与实现+vue(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于ssm的新能源汽车在线租赁管理系统+vue(完整前后端+说明文档+mysql+lw).zip
- 小目标尺寸下的地表信息图像分类数据集【已标注,约30,000张数据】
- java毕设项目之ssm家政服务网站设计+jsp(完整前后端+说明文档+mysql+lw).zip
- java毕设项目之ssm基于Web的智慧城市实验室主页系统设计与实现+vue(完整前后端+说明文档+mysql+lw).zip