2012-03-25 3 views
10

Я объявила typedef void (*DoRunTimeChecks)();Как сохранить указатель на функцию в структуре?

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

+3

Примечание что в C, 'void fn()' и 'void fn (void)' не являются синонимами. –

+0

+1 спасибо. Я уже попал в это – Mawg

ответ

15

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

struct example { 
    int x; 
    DoRunTimeChecks y; 
}; 

void Function(void) 
{ 
} 

struct example anExample = { 12, Function }; 

Чтобы присвоить полю:

anExample.y = Function; 

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

anExample.y(); 
4
#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; 
} 
Смежные вопросы