Linux C 语言结构体高级用法

话题引入

  1. 在Linux 内核中很多C语言结构体的写法是下面这样的。
    Linux C 语言结构体高级用法_第1张图片
  2. 结构体成员变量之前为什么有这么多 . ?,其实这样的写法是为了引用一个函数指针,可以看一下下面这个demo 就明白了。
#include 
#include 
#include 
#include 

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;
}

设备文件基本概念

  1. 普通文件可以通过文件名与实际的存储数据进行关联
  2. 设备文件通过设备节点与具体的物理设备进行关联
  3. 设备号:主设备号+次设备号组成
  4. 设备文件存在于/dev/目录下
  5. 设备节点可以自动创建、也可以手工创建

常见的设备文件

Linux C 语言结构体高级用法_第2张图片
查看内核版本:uname -r -a
dsp设备在Linux 内核2.6 版本中有,在最新的Linux内核中,没有。

343c409c-03cd-4a54-b20e-8bdfff1219cd

你可能感兴趣的:(#,C语言深度剖析,linux,c语言,运维)