Как я могу сохранить указатель на функцию в структуре? - PullRequest
14 голосов
/ 25 марта 2012

Я объявил typedef void (*DoRunTimeChecks)();

Как мне сохранить это как поле в структуре? Как мне назначить это? Как мне вызвать fn ()?

Ответы [ 2 ]

18 голосов
/ 25 марта 2012

Просто вставьте его, как в любое другое поле:

struct example {
   int x;
   DoRunTimeChecks y;
};

void Function(void)
{
}

struct example anExample = { 12, Function };

Для присвоения полю:

anExample.y = Function;

Для вызова функции:

anExample.y();
5 голосов
/ 25 марта 2012
#include <stdio.h>

typedef void (*DoRunTimeChecks)();

struct func_struct {
    DoRunTimeChecks func;
};

void function()
{
    puts("hello");
}

int main()
{
    struct func_struct func_struct;
    func_struct.func = function;
    func_struct.func();
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...