日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

glib 简介

發布時間:2024/6/21 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 glib 简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編譯

編譯
簡介


glib 可調試
/configure CFLAGS=-g && make && make install

or

make CFLAGS=-g

簡介

原文地址: http://laiyuanyuan7.blog.163.com/blog/static/1527432120112104428767/

glib庫是Linux平臺下最常用的C語言函數庫,它具有很好的可移植性和實用性。

glib是Gtk +庫和Gnome的基礎。glib可以在多個平臺下使用,比如Linux、Unix、Windows等。glib為許多標準的、常用的C語言結構提供了相應的替代物。

如果在程序中要使用到glib庫中的函數,則應該包含glib.h頭文件(在gtk.h和gnome.h頭文件中已經包含了glib.h了)


1 類型定義

1. 整數類型:gint8、guint8、gint16、guint16、gint31、guint32、gint64、guint64。不是所有的平臺都提供64位整型

2. 整數類型gshort、glong、gint和short、long、int相同

3. 布爾類型gboolean:gboolean可以取兩個值:TRUE和FALSE

4. 字符型gchar和char相同

5. 浮點型gfloat和gdouble和float、double完全等價

6. 指針gpointer對應于標準C的void*

7. gconstpointer對于于標準C的const void*


2 glib宏

2.1 常用宏

整型與指針類型間的轉換

1. GINT_TO_POINTER(a):將int型轉換成gpointer類型

2. GPOINTER_TO_INT(a):將gpointer類型轉換成int型

3. GUINT_TO_POINTER(a):將uint類型轉換成gpointer類型

4. GPOINTER_TO_UINT(a):將gpointer類型轉換成整型

5. NULL宏的定義:#define NULL (void*)0(也就是說:0是一個整型數據,而NULL則是指針類型)

2.2 調試宏

前提條件檢查(當定義了G_DISABLE_CHECKS時,前提條件檢查宏在編譯時就會消失)

斷言(當定義了G_DISABLE_ASSERT后,斷言宏在編譯時就會消失,而不會加入生成的程序中)

所有調試宏使用g_log輸出警告信息,g_log的警告信息包括發生錯誤的應用程序或庫函數的名字。

2.3 判斷構建是否是指定的構件

“ GTK_IS_構件名”系列宏用來判斷構件是否是相應的構件
GTK_IS_BUTTON:用來判斷構件是否是按鈕

GTK_IS_NOTEBOOK:用來判斷構件是否是筆記本構件


3 常用函數

1. g_warning:在控制臺輸出一條警告信息

2. g_error:在控制臺輸出一條錯誤信息后結束程序的執行

3. g_print:在控制臺輸出一條信息

4. g_object_unref(gpointer object):用來對object的引用數減1。當對object的引用數降為0時,刪除object

5. g_file_test:判斷某個文件是否存在

6. g_spawn_sync:創建一個子進程來運行外部程序。當子進程結束后,該函數才返回(同步的執行一個子進程)


4 內存管理

1. g_malloc總是返回gpointer類型。如果申請失敗,g_malloc將退出程序,所以不用檢查返回值

2. g_free忽略任何傳遞給它的NULL指針

3. g_realloc函數和realloc函數功能相同

4. g_malloc0:將分配的內存的每一個單元都置0


4 字符串處理

4.1 字符串操作

g_snprintf:用來格式化一個字符串,比sprintf函數安全
g_strcasecmp:實現兩個字符串大小寫不敏感的比較
g_strncasecmp:實現兩個字符串的前n個字符大小寫不敏感的比較

4.2 修改字符串

1. g_strdown將字符串轉換成小寫字母

2. g_strup將字符串轉換成大寫字母

3. g_strreverse將字符串顛倒過來

4. g_strchug刪除字符串前的空格

5. g_strchomp刪除字符串尾的空格

4.3 字符串轉換

1. g_strtod:把字符串轉換成gdouble類型

2. g_strerror:將出錯代碼轉換成描述出錯代碼的字符串

3. g_strsignal:將信號值轉換成描述信號的字符串

4.4 其他字符串轉換函數

1. g_strdup和g_strndup返回一個已分配內存的字符串或字符串前n個字符的拷貝

2. g_strconcat用來連接兩個字符串

3. g_strsplit在每個分隔符處分隔分割字符串,并返回一個新分配的字符串


5 數據結構

5.1 鏈表

glib提供了普通的單向鏈表和雙向鏈表,分別是GSList和GList。鏈表中的數據域是一個gpointer類型(通過GINT_TO_POINTER轉換也可以使得鏈表中可以保存整型)。

g_list_pervious用在雙向鏈表中來查找指定元素的前一個元素,該函數為雙向鏈表中獨有的函數。
注:這里只講單向鏈表函數,其它雙向鏈表函數只需要將單向鏈表函數名改為“g_list_名稱”即可,也適用。
g_slist_append用來在單向鏈表中添加一個元素
g_slist_remove用來在單向鏈表中刪除一個元素
g_slist_next用來獲取指定元素的下一個元素
g_slist_prepend用來在鏈表表頭插入數據
g_slist_reverse用來將鏈表中的元素反置
g_slist_insert用來在指定位置插入一個元素
g_slist_remove用來在刪除指定的元素
g_slist_foreach對鏈表的每一項調用GFunc函數。GFunc函數的定義如下:void* GFunc(gpointer data,gpointer user_data)

5.2 樹

在glib中有兩種不同的樹:GTree是基本的平衡二叉樹,它將存儲的數據按其值排序成二叉排序樹

5.3 哈希表


6 GString

GString類似于標準C的字符串類型,但是GString能夠自動增長,這些特性可以防止程序中的緩沖區溢出。下面是GString的定義:

struct GString{

gchar* str; 指向字符串數據的存儲空間

gint len; 字符串的長度

}

1. g_string_new(gchar* init):使用一個字符串來創建一個GString結構

2. g_string_free(GString* string,gint free_segment):釋放GString所占的內存

3. g_string_assign(GString* lval,const gchar* rval):將字符串rval復制到lval,銷毀lval原有的內容

4. g_string_truncate:截取字符串來生成指定長度的字符串

5. g_string_append:將字符串追加到指定字符串后面

6. g_string_append_c:將字符追加到指定的字符串后面

7. g_string_prepend:將字符串追加到指定的字符串前面

8. g_string_prepend_c:將字符追加到指定的字符串前面

9. g_string_sprintf:將一個格式化字符串寫入到GString中


7.計時器函數

計數器函數可以用于為操作計時。使用過程如下:

1. 使用g_timer_new創建一個計時器

2. 使用g_timer_start來開始對操作計時

3. 使用g_timer_stop來停止計時

4. 使用g_timer_elapsed來判斷計時器運行的時間

5. 不用時,使用g_timer_destroy來銷毀一個計時器

6. 在使用過程中,還可以使用g_timer_reset來將計時器重新置零


8 錯誤處理函數

1. g_strerror使用錯誤代碼來獲取一個描述錯誤的字符串。輸出結果一般采用:“程序名:發生錯誤的函數名:文件或者描述”

2. g_error打印一條出錯信息,然后退出程序。其格式與printf相似,但在它的信息前面加上了“**ERROR**”

3. g_warning打印一條警告信息,與printf相似,但在它的信息前面加上“**WARNING**”,而且它不退出程序。通常用于不是太嚴重的錯誤

4. g_message在輸出的字符串前面加上了“**message**”,用來輸出一條信息

5. g_strsignal通過信號值獲取描述該信號的字符串


9 其它實用函數

g_get_prgname:獲取程序的名字
g_set_prgname:設置程序的名字
g_get_user_name:返回當前用戶的名字
g_get_real_name:獲取用戶的真實名稱
g_get_home_dir:獲取用戶的根目錄
g_get_current_dir:獲取當前工作目錄
g_basename:獲得文件名(不帶前導目錄部分)
g_dirname:返回文件名的前導目錄部分
g_atexit:指定一個在正常程序中止時要執行的函數

g_assert(condition):判斷條件是否滿足,不滿足則輸出一條警告信息后退出程序的執行

1.g_return_if_fail(condition):如果條件為假,則輸出一條警告信息后從當前函數立刻返回

2.g_return_val_if_fail(condition,retval):如果條件為假,則輸出一條警告信息后,從當前函數返回,返回值為retval

總結

以上是生活随笔為你收集整理的glib 简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色小网站在线观看 | 婷婷伊人综合中文字幕 | 日韩中文在线字幕 | 制服丝袜av在线播放 | 色噜噜综合网 | 丝袜调教91porn | 国产午夜精品视频 | 亚洲精品午夜国产va久久成人 | 黄色三及 | 国产乱人乱精一区二视频国产精品 | 国产99久久久久 | 浮力影院草草 | 国产激情网 | 国产又粗又黄又爽 | 欧美成人三级在线视频 | 老司机精品视频在线 | 亚洲综合成人av | 精品国产乱码久久久久久108 | 一区国产在线 | 成人一级大片 | 免费荫蒂添的好舒服视频 | 亚洲成人av在线 | 超碰在线观看99 | 大胸美女网站 | 日韩中文三级 | 国产精品正在播放 | 91精品国产综合久久福利软件 | 艳母日本动漫在线观看 | 有色影院 | 伊人久操 | 老司机在线观看视频 | 高清av免费观看 | 久久久久久久久免费看无码 | 经典一区二区 | 全部孕妇毛片 | 午夜性色福利视频 | 欧美aaaa视频| 综合在线视频 | 69综合| 亚洲黄色精品 | 激情婷婷网 | 亚洲综合a | 日韩精品视频中文字幕 | 国产午夜精品免费一区二区三区视频 | 在线看黄免费 | 今天最新中文字幕mv高清 | 2020狠狠干| 秋霞欧美在线观看 | www.久久99 | 高清视频一区二区 | 国产精品久久综合青草亚洲AV | 波多野结衣在线播放视频 | 国产蜜臀av一区二区 | 欧美乱妇狂野欧美在线视频 | 日噜| 国产激情二区 | a视频免费观看 | www.四虎com| 根深蒂固在线观看 | 老女人人体欣赏a√s | 国产一区中文 | 亚洲精品成a人在线观看 | 97人人爽人人爽人人爽人人爽 | 老牛嫩草二区三区观影体验 | 操碰人人| 精品人妻无码专区在线 | 日本大尺度做爰呻吟舌吻 | 免费欧美在线 | 水蜜桃影库 | 99热1| 成人片在线播放 | 精品国产伦一区二区三区免费 | 日韩精品一区二区三区电影 | 好吊妞视频在线观看 | 91视频青青草 | 催眠调教艳妇成肉便小说 | 日本在线观看视频网站 | 欧美日韩亚洲色图 | 欧美极品在线观看 | 亚洲欧美变态另类丝袜第一区 | 一级黄色片在线观看 | 精品亚洲中文字幕 | 少妇aaaa| 欧美不卡网 | 一级片视频在线观看 | 91九色在线播放 | 在线观看黄色国产 | 日本中文字幕免费观看 | h视频免费在线观看 | 性欢交69精品久久久 | 性工作者十日谈 | 伊人一道本 | 精品乱码一区内射人妻无码 | 激情综合五月网 | 福利视频免费看 | 久久国产精品综合 | 国产18在线观看 | 黄色网址你懂得 | 人妖性做爰aaaa |