运行时检查函数指针数组指向具有不同参数的函数指针的有效性

时间:2014-04-07 18:20:44

标签: c function-pointers

我已经实现了一个像这样的函数指针数组:

// functions to point to
void foo1 (void) {}; 
void foo2 (char * str) {}; 
void foo3 (char * str1, char * str2) {};

//enum used for indexing
enum fp{
    loc1 = 0,
    loc2,
    loc3,
    size 
};

typedef union {
    void (*) (void);
    void (*) (char *);
    void (*) (char *, char *);        
} genericfp_t;

genericfp_t myArray[size] = {foo1, foo2, foo3};

在我的代码中,我将严格使用枚举来调用函数指针数组:(例如)

myArray[loc1]();
myArray[loc2]('1');

有人向我指出,在代码安全方面,这仍然是不好的做法。他们争论最终可能会有人使用某些在运行时更改的变量来调用数组,最终会出现如下所示的情况:

int index = 0;

myArray[index]('1'); // inconsistent

您对此有何看法?

0 个答案:

没有答案