HAL层结构 & HAL向上层提供接口

1. 基础了解:

        https://www.cnblogs.com/microliang/p/3424311.html

2.1  使用代码实现一个简单hal:

        https://blog.csdn.net/Luoshengyang/article/details/6567257

2.2   hal怎么向上层提供接口:

         https://blog.csdn.net/MyArrow/article/details/7175204

个人感觉这个人在hal层向上层提供接口的理解不够明确,我不是认同,我的理解如下图:

 

关于二级指针的一个小实验:

#include <stdio.h>
#include <stdlib.h>

typedef struct hw_device
{
	int  itself;  //表示本身最初的值
}hw_device_t;


typedef struct test_device
{
	hw_device_t common;
	int	additional;  //附加变量,通过观察此变量来判断猜想
}test_device_t;


static void test_device_open(hw_device_t** device)  
{
	test_device_t* test_device = (test_device_t*)malloc(sizeof(test_device_t));

	if (test_device != NULL)
	{
		test_device->common.itself = 50;
		test_device->additional = 50;
	}

	if (device != NULL)
	{
		*device = &(test_device->common);
	}
	//不用释放内存,等程序自己结束时释放
}

void test_init()
{
	test_device_t*  test_device = (test_device_t*)malloc(sizeof(test_device_t));
	if (test_device != NULL)
	{
		test_device->common.itself = 10;
		test_device->additional = 10;
		printf("局部变量test_device在本文件中的初始值:common.itself:%d  ; additional:%d\n", test_device->common.itself, test_device->additional);
		free(test_device); //防止内存泄漏,因为在后续的过程中指针会改变指向,那现在指向的内存就会出现内存泄漏
	}
	test_device = NULL;

	test_device_open((hw_device_t**)(&test_device));

	printf("局部变量test_device被test_device_open函数内部修改后的值:common.itself:%d  ; additional:%d\n", test_device->common.itself, test_device->additional);
}


int main()
{
	test_init();
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值