[ create a new paste ] login | about

Link: http://codepad.org/CiqhtAmr    [ raw code | output | fork | 1 comment ]

hecomi - C, pasted on Nov 11:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>

typedef enum CALC { ADD, SUB, MUL };

int add(int a, int b) { return a+b; }
int sub(int a, int b) { return a-b; }
int mul(int a, int b) { return a*b; }

int(*funcs[])(int, int) = {add, sub, mul};

void* func(enum CALC mode) {
	return funcs[mode];
}

int main()
{
	printf("num1: %d; num2: %d; mode: %d; func = %d\n", 10, 10, ADD, ( (int (*)(int,int)) (func(ADD)) )(10, 10) );
	printf("num1: %d; num2: %d; mode: %d; func = %d\n", 10, 10, SUB, ( (int (*)(int,int)) (func(SUB)) )(10, 10) );
	printf("num1: %d; num2: %d; mode: %d; func = %d\n", 10, 10, MUL, ( (int (*)(int,int)) (func(MUL)) )(10, 10) );
	return 0;
}


Output:
1
2
3
num1: 10; num2: 10; mode: 0; func = 20
num1: 10; num2: 10; mode: 1; func = 0
num1: 10; num2: 10; mode: 2; func = 100


Create a new paste based on this one


Comments:
posted by hecomi on Nov 11
typedefはミスです.

reply