#include <stdio.h>
int get_one(void)
{
return 1;
}
int get_five(void)
{
return 5;
}
int get_ten(void)
{
return 10;
}
// create a new type alias "getter_func" for type "int(*)(void)",
// i.e. pointer to function with no args that returns an int
typedef int(*getter_func)(void);
void execute(int first_param, int second_param, getter_func third_param_getter)
{
int third_param = third_param_getter();
printf("p1 = %d, p2 = %d, p3 = %d\n", first_param
, second_param
, third_param
); }
int main(void)
{
execute(100, -1, &get_five);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZ2V0X29uZSh2b2lkKQp7CglyZXR1cm4gMTsKfQoKaW50IGdldF9maXZlKHZvaWQpCnsKCXJldHVybiA1Owp9CgppbnQgZ2V0X3Rlbih2b2lkKQp7CglyZXR1cm4gMTA7Cn0KCi8vIGNyZWF0ZSBhIG5ldyB0eXBlIGFsaWFzICJnZXR0ZXJfZnVuYyIgZm9yIHR5cGUgImludCgqKSh2b2lkKSIsCi8vIGkuZS4gcG9pbnRlciB0byBmdW5jdGlvbiB3aXRoIG5vIGFyZ3MgdGhhdCByZXR1cm5zIGFuIGludAp0eXBlZGVmIGludCgqZ2V0dGVyX2Z1bmMpKHZvaWQpOwoKdm9pZCBleGVjdXRlKGludCBmaXJzdF9wYXJhbSwgaW50IHNlY29uZF9wYXJhbSwgZ2V0dGVyX2Z1bmMgdGhpcmRfcGFyYW1fZ2V0dGVyKQp7CglpbnQgdGhpcmRfcGFyYW0gPSB0aGlyZF9wYXJhbV9nZXR0ZXIoKTsKCXByaW50ZigicDEgPSAlZCwgcDIgPSAlZCwgcDMgPSAlZFxuIiwgZmlyc3RfcGFyYW0sIHNlY29uZF9wYXJhbSwgdGhpcmRfcGFyYW0pOwp9CgppbnQgbWFpbih2b2lkKQp7CglleGVjdXRlKDEwMCwgLTEsICZnZXRfZml2ZSk7CglyZXR1cm4gMDsKfQo=