nginx基本数据类型

2018-07-22 17:06:22

下面是一些常用整形的整理,其他的可以参考 nginx 源码。

定义在 core/ngx_config.h

typedef intptr_t        ngx_int_t;      //有符号整数
typedef uintptr_t       ngx_uint_t;     //无符号整数
typedef intptr_t        ngx_flag_t;     //相当于bool,标志量用


#define NGX_INT32_LEN   (sizeof("-2147483648") - 1)
#define NGX_INT64_LEN   (sizeof("-9223372036854775808") - 1)

定义在 core/ngx_rbtree.h ,红黑树的类型

typedef ngx_uint_t  ngx_rbtree_key_t;

typedef ngx_int_t   ngx_rbtree_key_int_t;

os/unix/ngx_time.h,毫秒的整形类型

typedef ngx_rbtree_key_t      ngx_msec_t;
typedef ngx_rbtree_key_int_t  ngx_msec_int_t;

无效值,有了这些无效值,就可以在初始化时候赋值。

#define NGX_CONF_UNSET       -1
#define NGX_CONF_UNSET_UINT  (ngx_uint_t) -1
#define NGX_CONF_UNSET_PTR   (void *) -1
#define NGX_CONF_UNSET_SIZE  (size_t) -1
#define NGX_CONF_UNSET_MSEC  (ngx_msec_t) -1


字符串

typedef struct {
    size_t      len;    //字符串的长度
    u_char     *data;   //字符串的起始地址,注意是u_char,不是char
} ngx_str_t;


// key-value结构体,用于解析配置文件里的数据
typedef struct {
    ngx_str_t   key;        // key
    ngx_str_t   value;      // value
} ngx_keyval_t;

下面是部分的字符串宏定义,其他的可以参考 core/ngx_string.h

// 初始化字符串,只能用于初始化,str必须是个字面值
#define ngx_string(str)     { sizeof(str) - 1, (u_char *) str }

// 空字符串
#define ngx_null_string     { 0, NULL }

// 运行时设置字符串,str是指针(地址)
#define ngx_str_set(str, text)                                               \
    (str)->len = sizeof(text) - 1; (str)->data = (u_char *) text

// 把字符串置为空字符串,运行时设置,str是指针
#define ngx_str_null(str)   (str)->len = 0; (str)->data = NULL
#define ngx_strncmp(s1, s2, n)  strncmp((const char *) s1, (const char *) s2, n)

#define ngx_strcmp(s1, s2)  strcmp((const char *) s1, (const char *) s2)

#define ngx_strstr(s1, s2)  strstr((const char *) s1, (const char *) s2)
#define ngx_strlen(s)       strlen((const char *) s)

格式化

u_char * ngx_sprintf(u_char *buf, const char *fmt, ...);
u_char * ngx_snprintf(u_char *buf, size_t max, const char *fmt, ...);
u_char * ngx_slprintf(u_char *buf, u_char *last, const char *fmt, ...);


备注

1.nginx版本为 1.14.0。
2..原文地址http://www.freecls.com/a/2712/d3


©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。