Can we call functions using function pointer? if yes how?
4 Answers
Yes. Trivial example:
// Functions that will be executed via pointer.
int add(int i, int j) { return i+j; }
int subtract(int i, int j) {return i-j; }
// Enum selects one of the functions
typedef enum {
ADD,
SUBTRACT
} OP;
// Calculate the sum or difference of two ints.
int math(int i, int j, OP op)
{
int (*func)(int i, int j); // Function pointer.
// Set the function pointer based on the specified operation.
switch (op)
{
case ADD: func = add; break;
case SUBTRACT: func = subtract; break;
default:
// Handle error
}
return (*func)(i, j); // Call the selected function.
}
1 Comment
Adam Liss
Greg: thanks for the highlighting edit -- learn something new every day!
Yes you can.
1 Comment
TheSoftwareJedi
Agreed +1. Whew, wish they were all that easy.
Yes. An example:
Before code...
typedef int ( _stdcall *FilterTypeTranslatorType )
(
int TypeOfImportRecord,
PMAType *PMA
);
FilterTypeTranslatorType FilterTypeTranslator = {NULL};
Now in the code...
PMAType *PMA;
HANDLE hFilterDll;
// assume DLL loaded
// Now find the address...
...
FilterTypeTranslator[TheGroup] =
( FilterTypeTranslatorType ) GetProcAddress( hFilterDll,
"FilterTypeTranslator" );
...
// now call it
FilterTypeTranslator(1,PMA);
...