2012-03-25 10 views
10

私は宣言しましたtypedef void (*DoRunTimeChecks)();構造体に関数ポインタを格納するにはどうしたらいいですか?

これを構造体のフィールドとして保存するにはどうすればよいですか?それをどのように割り当てますか? fn()はどのように呼び出すのですか?

+3

注:

anExample.y = Function; 

は、関数を呼び出すには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(); 
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; 
} 
関連する問題