• glib学习笔记-基本知识


    glib 基本知识

    基本类型

    函数

    #define G_GINT64_CONSTANT(val) (val##L)              
    #define G_GUINT64_CONSTANT(val) (val##UL)
    #define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
    

    类型和值

    • 新类型,不是标准C的类型: gboolean, gsize, gsszie, goffset, gintptr, guintptr.
    • 保证跨平台一致的整数类型:gint8, guint8, gint16, guint16, gint32, guint32, gint64, guint64.
    • 比标准C对应的更好用的类型:gpointer, gconstpointer, guchar, guint, gushort, gulong.
    • 与标准C的类型一致,但为了基本类型的完整性而定义:gchar, gint, gshort, glong, gfloat.

    大部分类型都十分易懂,值得留意的是gpointer即是void 指针,gconstopointer是const void指针

    标准宏

    函数

    • #define G_IS_DIR_SEPARATOR()
      是否路径分隔符 返回TRUE 或者FALSE

    • #define MIN()
      取较小者 MIN(1,2)

    • #define MAX()
      取较大者

    • #define ABS()
      取绝对值

    • #define CLAMP()
      CLMAP(x, low, high) x比low小取low , 比high大取high , 介于两者返回x

    • #define G_STRUCT_MEMBER_P(struct_p, struct_offset)
      ((gpointer) ((guint8*) (struct_p) + (glong) (struct_offset)))
      返回从Struct_p偏移struct_offset个bytes的gpointer指针

    • #define G_STRUCT_MEMBER(member_type, struct_p, struct_offset)
      ((member_type) G_STRUCT_MEMBER_P ((struct_p), (struct_offset)))

    • #define G_STRUCT_OFFSET(struct_type, member)
      ((glong) offsetof (struct_type, member))

    • #define G_STRUCT_OFFSET(struct_type, member)
      ((glong) ((guint8) &((struct_type) 0)->member)

    返回member的偏移值

    类型和值

    • #define G_OS_WIN32
    • #define G_OS_UNIX
    • #define G_DIR_SEPARATOR
    • #define G_DIR_SEPARATOR_S
    • #define G_SEARCHPATH_SEPARATOR
    • #define G_SEARCHPATH_SEPARATOR_S
    • #define TRUE
    • #define FALSE
    • #define NULL
    • #define G_MEM_ALIGN
    • #define G_CONST_RETURN

    各个宏的意义显而易见

    类型转换宏

    函数

    • #define GINT_TO_POINTER()
    • #define GPOINTER_TO_INT()
    • #define GUINT_TO_POINTER()
    • #define GPOINTER_TO_UINT()
    • #define GSIZE_TO_POINTER()
    • #define GPOINTER_TO_SIZE()

    各个宏的意义显而易见

  • 相关阅读:
    java高级语法4:集合
    java高级语法3:异常和注解
    Java高级语法2:Lambda表达式
    VS编译时卡在正在从以下位置加载xxx.dll符号
    mysql中的外键
    localhost和127.0.0.1的区别
    添加依赖项
    代码版本控制——TFS
    优化版冒泡排序
    visual studio vode 汉化
  • 原文地址:https://www.cnblogs.com/raintwice/p/6802243.html
Copyright © 2020-2023  润新知