1

したがって、今日の演習では、header.h明らかにこれを使用して、演算子に対応する関数を取得する必要があります。

#ifndef __HEADER__
#define __HEADER__

operator operator_table[] = {{"-", &function_sub}, \
{"+", &function_add}, \
{"*", &function_mul}, \
{"/", &function_div}, \
{"%", &function_mod}};

#endif

私が最初に気付いたのは、operatorタイプが定義されていないことtypedefですint。次に、本当の問題が始まります。K&R と C Primer Plus の両方を最初から読みましたが、この構文に遭遇していないか、少なくとも認識していませんdictionary。どのように使用できますか?

4

3 に答える 3

3

operatorここに構造があります。次のように定義できます。

typedef struct {
    char *op;
    int (*func)(int, int);
} operator;

funcここに関数へのポインタがあります

function_sub、、、およびはfunction_add、C コードで定義された関数でなければなりませfunction_mulfunction_divfunction_mod

于 2013-07-30T12:32:42.497 に答える
3

これは構造体の配列のようで、構造体 (という名前operator) には文字列と関数ポインターが含まれています。特別な構文はなく、通常の配列定義と初期化だけです。

はプリプロセッサの\一部であり、行継続「演算子」です。これは単に、プリプロセッサが、コンパイラが参照できるように、これから単一の行を作成することを意味します。

于 2013-07-30T12:33:49.437 に答える