Shell:引导程序框架,使用结构体和回调函数的方式可以简单的实现Shell,代码难度系数不高
以下是我自己写的一个小例子(附件为linux下编译生成的可执行文件)
代码:
#include <stdio.h>
typedef void (*back_way)(void);//函数类型
void A(void){printf("AAA\n");}//函数指针A
void B(void){printf("BBB\n");}//函数指针B
typedef struct func_
{
const char name;//命令名
back_way func;//命令函数指针
}func_t;
const func_t func_sel[]= //匹配数组
{
{'A',A},{'a',A},
{'B',B},{'b',B},
{0,0},
};
const func_t* func_find(const char name)//匹配函数
{
int i = sizeof(func_sel)/sizeof(func_sel[0]);
int j = 0;
for(; j < i; j++)
if(func_sel[j].name == name)
return &func_sel[j];//找到就返回
return (const func_t*)0;//找不到返回0
}
int main()
{
char name = 'a';
const func_t *p = func_find(name);//匹配函数
if(p)p->func();//调用函数显示结果
return 0;
}