12

Tclドキュメントからのこのコードを理解しようとしています

typedef int Tcl_DriverOutputProc(
        ClientData instanceData,
        const char *buf,
        int toWrite,
        int *errorCodePtr);

私が知っているように、 typedef の目的は既存の型に代替名を割り当てることですが、なぜ typedef int がfunctionに必要なのですか? これはどのように使用できますか?

4

3 に答える 3

16

typedef の目的は、既存の型に代替名を割り当てることであることを知っています

丁度。Tcl_DriverOutputProc関数には型があり、これにより、この関数型に名前が割り当てられます。関数型自体は、名前が欠落している関数のように書かれています。

int(ClientData, const char *, int, int *)

また、関数宣言と同様に、パラメーターの名前を含めたり、省略したりできます。

これはどのように使用できますか?

実行時の動作を指定するために、関数へのポインタを使用できます。例えば:

typedef void function();
void hello()   {printf("Hello\n");}
void goodbye() {printf("Goodbye\n");}

int main() {
    function * pf = hello;
    pf(); // prints "Hello"
    pf = goodbye;
    pg(); // prints "Goodbye"
}

この場合、TCL 出力の一部を処理する関数を記述し、その関数を使用するように TCL に指示できます。

于 2013-04-17T10:30:03.137 に答える