Linux C 语言结构体高级用法
话题引入
- 在Linux 内核中很多C语言结构体的写法是下面这样的。
![在这里插入图片描述]()
- 结构体成员变量之前为什么有这么多 . ?,其实这样的写法是为了引用一个函数指针,可以看一下下面这个demo 就明白了。
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
struct Demo
{
int (*add)(int a,int b);
int (*sub)(int a,int b);
int (*mul)(int a,int b);
};
int test_add(int a,int b){return a+b;}
int test_sub(int a,int b){return a-b;}
int test_mul(int a,int b){return a*b;}
int main(int argc,char* argv[])
{
struct Demo demo={
.add=test_add,
.sub=test_sub,
.mul=test_mul,
};
int a=19;
int b=3;
printf("a+b=%d\n",demo.add(a,b));
printf("a-b=%d\n",demo.sub(a,b));
printf("a*b=%d\n",demo.mul(a,b));
return 0;
}
设备文件基本概念
- 普通文件可以通过文件名与实际的存储数据进行关联
- 设备文件通过设备节点与具体的物理设备进行关联
- 设备号:主设备号+次设备号组成
- 设备文件存在于/dev/目录下
- 设备节点可以自动创建、也可以手工创建
常见的设备文件

查看内核版本:uname -r -a
dsp设备在Linux 内核2.6 版本中有,在最新的Linux内核中,没有。
343c409c-03cd-4a54-b20e-8bdfff1219cd


浙公网安备 33010602011771号