2012-03-25 30 views
10

Tôi đã khai báo typedef void (*DoRunTimeChecks)();Làm cách nào để lưu trữ một con trỏ hàm trong cấu trúc?

Làm cách nào để lưu trữ trường đó dưới dạng một cấu trúc? Làm thế nào để gán nó? Làm thế nào để gọi fn()?

+3

Note rằng, trong C, 'void fn()' và 'void fn (void)' không đồng nghĩa. –

+0

+1 cảm ơn. Tôi đã rơi vào đó – Mawg

Trả lời

15

Chỉ cần đặt nó trong giống như bạn làm bất kỳ lĩnh vực khác:

struct example { 
    int x; 
    DoRunTimeChecks y; 
}; 

void Function(void) 
{ 
} 

struct example anExample = { 12, Function }; 

Để gán cho lĩnh vực này:

anExample.y = Function; 

Để gọi hàm:

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; 
} 
Các vấn đề liên quan