typedef int (*http_data_cb) (http_parser*, const char *at, size_t length);
私の知る限り、typedefは標準ライブラリの型に新しい名前を割り当てます。この状況では、のインスタンス*http_data_cb
は int ですが、どう(http_parser*, const char *at, size_t length)
ですか?
コード全体のリンクはこちら
ありがとう、
typedef int (*http_data_cb) (http_parser*, const char *at, size_t length);
私の知る限り、typedefは標準ライブラリの型に新しい名前を割り当てます。この状況では、のインスタンス*http_data_cb
は int ですが、どう(http_parser*, const char *at, size_t length)
ですか?
コード全体のリンクはこちら
ありがとう、
これは、関数へのポインターである型を typedef する方法です。通常、このような typedef では、関数の引数に名前を付けず、型を示すだけです。
したがって、 type の変数は、 int の結果を返し、 typeの3 つの引数をこの順序でhttp_data_cb
受け取る関数へのポインタになります。http_parser*
const char
size_t
関数ポインタ型を宣言します。
type-aliashttp_data_cb
は、3つの引数を受け取り、整数を返す関数へのポインターです。
これを使用して、他の関数へのポインターを作成できます。たとえば、イベント駆動型システムでコールバックとして渡すことができます。
宣言を読んで理解するための詳細については、たとえば時計回り/スパイラルルールを参照してください。
http_data_cb : 変数です
(*http_data_cb) : ポインタ変数
(*http_data_cb)(...) : 関数へのポインタ変数です
(*http_data_cb)(http_parser*, const char *at, size_t length) : (http_parser*, const char *at, size_t length) を受け取る関数へのポインター変数です。
int (*http_data_cb)(http_parser*, const char *at, size_t length) : (http_parser*, const char *at, size_t length) を受け取り、int を返す関数へのポインター変数です。
typedef int (*http_data_cb)(http_parser*, const char *at, size_t length): http_data_cb は、(http_parser*, const char *at, size_t length) およびint を返します。