Calling functions by address

Charles Noren noren at dinl.uucp
Wed Aug 31 07:58:40 AEST 1988


I'm not sure if I understand, but try something like this:

  typedef void (*func)()  funcarray;

  void func1(), func2(), func3(),...   /* Function Prototypes */

  funcarray addressarray [] = {
    func1, func2, func3,...
  }

  ...and then execute this function to call function by address code:

  void execute (array, code)
  funcarray array[];
  int       code;
  {
    void (*function) ();

    function = array[code];
    (*function)();
  }

  ...the calling code would look like:

  execute (addressarray, code);

I have not tried this, but I have used something very similar for implementing
finite state machines using state/event matrices and it worked quite well.

                          chuck



More information about the Comp.lang.c mailing list