2012-03-25 24 views
10

मैंने typedef void (*DoRunTimeChecks)();मैं संरचना में फ़ंक्शन पॉइंटर कैसे स्टोर कर सकता हूं?

मैं इसे संरचना में एक फ़ील्ड के रूप में कैसे स्टोर करूं? मैं इसे कैसे सौंपूं? मैं एफएन() कैसे कॉल करूं?

+3

नोट:

anExample.y = Function; 

समारोह कॉल करने के लिए कि, सी में, 'शून्य एफएन()' और 'शून्य एफएन (शून्य)' समानार्थी नहीं हैं। –

+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; 
}