J'ai un struct qui prend un pointeur de fonction, comme ceci:Comment créer une fonction d'usine C?
typedef int (*node_transition_func)(wint_t);
typedef struct lex_dfa_arc_t {
node_transition_func func;
int expected_return_val;
struct lex_dfa_node_t * node;
} LEX_DFA_ARC_T;
Et maintenant, je veux créer une fonction qui renvoie une fonction du prototype « int func (wint_c); » Par exemple:
node_transition_func input_equals(wint_t input, wint_t desired) { ... }
Est-il possible en C de faire fonctionner la fonction ci-dessus? J'essaie d'éviter de devoir définir une fonction pour chaque lettre (par exemple, input_equals_letter_a, input_equals_letter_b, input_equals_letter_c, etc.). Mon autre approche serait de faire en sorte que node_transition_func prenne un wint_t et un wchar_t * des caractères désirés, mais j'étais curieux de savoir si ma première approche fonctionnerait.
Merci!
Je n'étais pas au courant du terme 'currying' jusqu'à présent, et j'ai trouvé ce fil qui explique beaucoup à ce sujet: http://stackoverflow.com/questions/1023261/is-there-a-way-to -do-currying-in-c – Scott