2011年11月13日

Function pointer in C

Function pointer is useful to do abstraction; it is a general implementation of immediate interface; it is also used to implement the plug-in interface.

Here is a example:


#include <stdio.h>
#include <strings.h>

typedef struct _dev{
    char name[16];
    void (*open)();
}dev;

double init (dev *dev)
{
    bzero(dev->name, sizeof(dev->name));
    return 0.0;
}

int dev_a_open(void)
{
    printf("device a open\n");
    return 0;
}

int dev_b_open(void)
{
    printf("device b open\n");
    return 0;
}

int main(int argc, char *argv)
{

    dev dev_a, dev_b, *dev;

    init(&dev_a);
    init(&dev_b);

    dev = &dev_a;
    dev->open = dev_a_open;
    dev->open();

    dev = &dev_b;
    dev->open = dev_b_open;
    dev->open();

    return 0;
}

沒有留言:

張貼留言

歡迎留言