用c实现面向对象

这篇博客通过一个简单的示例展示了如何在Linux中理解和操作框架,特别是file_operations结构。作者创建了两个LED对象LED1和LED2,每个对象都有自己的状态和设置状态的方法。通过ledset函数,可以针对不同的LED对象调用相应的方法,从而演示了Linux内核中对象驱动和操作的原理。
摘要由CSDN通过智能技术生成

前言

这种实现方式,多玩一玩,有利于理解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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值