-2
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)ですか?

コード全体のリンクはこちら

ありがとう、

4

3 に答える 3

2

これは、関数へのポインターである型を typedef する方法です。通常、このような typedef では、関数の引数に名前を付けず、型を示すだけです。

したがって、 type の変数は、 int の結果を返し、 typeの3 つの引数をこの順序でhttp_data_cb受け取る関数へのポインタになります。http_parser*const charsize_t

于 2013-01-30T12:44:12.270 に答える
1

関数ポインタ型を宣言します。

type-aliashttp_data_cbは、3つの引数を受け取り、整数を返す関数へのポインターです。

これを使用して、他の関数へのポインターを作成できます。たとえば、イベント駆動型システムでコールバックとして渡すことができます。

宣言を読んで理解するための詳細については、たとえば時計回り/スパイラルルールを参照してください。

于 2013-01-30T12:44:05.160 に答える
0

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 を返します。

于 2013-01-30T12:53:32.083 に答える