nginx 常见宏定义

#define ngx_string(str)     { sizeof(str) - 1, (u_char *) str }
#define ngx_null_string     { 0, NULL }
#define ngx_str_set(str, text)                                               \
    (str)->len = sizeof(text) - 1; (str)->data = (u_char *) text
#define ngx_str_null(str)   (str)->len = 0; (str)->data = NULL
  
上面这四个函数,使用时一定要小心,  ngx_string   ngx_null_string 只能用于赋值时初始化, ngx_string ngx_str_set  在调用时,传进去的字符串一定是常量字符串,否则会得到意想不到的错误。

#define ngx_tolower(c)      (u_char) ((c >= 'A' && c <= 'Z') ? (c | 0x20) : c)                                                               
#define ngx_toupper(c)      (u_char) ((c >= 'a' && c <= 'z') ? (c & ~0x20) : c)

#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)           
  
// base64编码/解码长度
#define ngx_base64_encoded_length(len)     (((len + 2) / 3) *4)
#define ngx_base64_decoded_length(len)     (((len + 3) / 4) * 3)

//地址对齐宏
  1. #define ngx_align(d, a)     (((d) + (a - 1)) & ~(a - 1))  
  2. #define ngx_align_ptr(p, a)  \  
  3. (u_char *) (((uintptr_t) (p) + ((uintptr_t) a - 1)) & ~((uintptr_t) a - 1))  
地址d + 对齐Bytes -1, 如果地址d已经是按照Bytes对齐的首地址上,则相加的结果还是在本“行”上,如果d不在对齐的首地址上,那么相加后的结果就在下一“行”上,然后对Bytes的地位字节抹去,仅保留高位字节,从而获取应该对齐的首地址  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值