前言
这种实现方式,多玩一玩,有利于理解LINUX中的各种框架是怎么运作的,比如file_operations
举例
#include "stdio.h"
typedef unsigned char u8;
typedef struct{
u8 sta;
void (*setsta)(u8 s);
}LedObj;
/* 声明一个LED对象,名称叫做LED1,并且实现它的方法drv_led1_setsta*/
void drv_led1_setsta(u8 sta)
{
printf("这里是led1的函数\nsta=%d\n",sta);
}
LedObj LED1={
.sta = 1,
.setsta = drv_led1_setsta,
};
/* 声明一个LED对象,名称叫做LED2,并且实现它的方法drv_led2_setsta*/
void drv_led2_setsta(u8 sta)
{
printf("这里是led2的函数\nsta=%d\n",sta);
}
LedObj LED2={
.sta = 2,
.setsta = drv_led2_setsta,
};
/* 操作LED的函数,参数指定哪个led*/
void ledset(LedObj *led, u8 sta)
{
led->setsta(sta);
}
int main(void){
LedObj LED3={
.sta = 3,
.setsta = drv_led2_setsta,
};
LedObj* lcd=0;
lcd = &LED2;
ledset(lcd,lcd->sta);
lcd = &LED3;
lcd->setsta(lcd->sta);
return 0;
}