1. 案例分析
(1) main.m 文件代码
while (1) {
printf("请输入字符串: max --- 求最大值 或者 min --- 求最小值 或者 sum --- 求和");
char str[20] = {0};
scanf("%s", str);
int value = getValueForString(3, 5, str);
printf("value = %d\n", value);
}
(2) Function.m 文件代码
typedef int(*PFUN)(int x, int y);
int maxValue(int x, int y);
int minValue(int x, int y);
int sumValue(int x, int y);
int getValueForString(int x, int y, char str[]);
PFUN getFunctionByString(char str[]);
struct stringAndFunction {
char string[20];
PFUN function;
};
typedef struct stringAndFunction StringAndFun;
(2) Function.h 文件代码
int maxValue(int x, int y) {
return x > y ? x : y;
}
int minValue(int x, int y) {
return x < y ? x : y;
}
int sumValue(int x, int y) {
return x + y;
}
StringAndFun funPair[] = {
{"max", maxValue},
{"min", minValue},
{"sum", sumValue}
};
int getValueForString(int x, int y, char str[]) {
PFUN fun = getFunctionByString(str);
return fun(x, y);
}
PFUN getFunctionByString(char str[]) {
for (int i = 0; i < sizeof(funPair) / sizeof(funPair[0]); i++) {
if (strcmp(str, funPair[i].string) == 0) {
return funPair[i].function;
}
}
return NULL;
}