首頁 >後端開發 >php教程 >基本資料結構

基本資料結構

WBOY
WBOY原創
2016-07-29 09:15:481186瀏覽

首先,是整數型態:
src/core/ngx_config.h

<code><span>typedef</span> intptr_t        ngx_int_t;
<span>typedef</span> uintptr_t       ngx_uint_t;
<span>typedef</span> intptr_t        ngx_flag_t;</code>

即整數、無符號整數和bool。 intptr_t 等三種定義如下:
/usr/local/include/stdint.h

<code><span>/* Types for `void *' pointers.  */</span><span>#if __WORDSIZE == 64</span><span># ifndef __intptr_t_defined</span>
typedef <span>long</span><span>int</span>        intptr_t;
<span>#  define __intptr_t_defined</span><span># endif</span>
typedef unsigned <span>long</span><span>int</span>   uintptr_t;
<span>#else</span><span># ifndef __intptr_t_defined</span>
typedef <span>int</span>         intptr_t;
<span>#  define __intptr_t_defined</span><span># endif</span>
typedef unsigned <span>int</span>        uintptr_t;
<span>#endif</span></code>

即:64系統則使用長整形(8位元組),否則使用整形(4位元組)。

然後是字串型:
/src/core/ngx_string.h

<code><span>typedef</span> struct {
    size_t      len;
    u_char     *<span><span>data</span>;</span>
} ngx_str_t;
</code>

接著,定義了一堆字串相關的函數,類似於對應於ngx_str_t的成員函數吧。

<code><span>typedef</span><span>struct</span> {
    ngx_str_t   key;
    ngx_str_t   value;
} ngx_keyval_t;


<span>typedef</span><span>struct</span> {  <span>// 位域用来标示类型等元信息</span><span>unsigned</span>    len:<span>28</span>;
    <span>unsigned</span>    valid:<span>1</span>;
    <span>unsigned</span>    no_cacheable:<span>1</span>;
    <span>unsigned</span>    not_found:<span>1</span>;
    <span>unsigned</span>    escape:<span>1</span>;

    u_char     *data;
} ngx_variable_value_t;
<span>typedef</span><span>struct</span> {
    ngx_rbtree_node_t         node;
    ngx_str_t                 str;
} ngx_str_node_t;</code>
系統的errno.h中定義了錯誤號,多層include後最終錯誤號定義於/usr/include/asm-generic/errno.h中。 而strerror和strerror_r函數則宣告於string.h版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。
函數 描述
ngx_string(str) 建構函數,str指向 src/os/unix/ngx_errno.h
以上就介紹了基本資料結構,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn