基本的なデータ構造

WBOY
WBOYオリジナル
2016-07-29 09:15:481177ブラウズ

まず、整数型:
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>

つまり、整数、符号なし整数、ブール値です。 intptr_t などの 3 つの型は次のように定義されています:
/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 で定義され、複数レベルのインクルード後の最終エラー番号は /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 までご連絡ください。