结构体函数注册

结构体函数注册使用

知识点

  1. 结构体
  2. 宏定义
  3. 结构体成员的使用
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>

struct test
{
    void (*test_fun)(void);
};

#define register_test(test_func) \
        struct test test_func 

void sum(void)
{
    int x = 10, y = 10;
    int sum;
    sum = x + y;
    printf("sum = %d\n", sum);
    getchar();
}

int main()
{
    register_test() test_middle = {
        .test_fun = sum,
    };
    test_middle.test_fun();
    return 0;
}

代码注释

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

struct test
{
    void (*test_fun)(void);
};

#define register_test(test_func) \
        struct test test_func 

void sum(void)
{
    int x = 10, y = 10;
    int sum;
    sum = x + y;
    printf("sum = %d\n", sum);
    getchar();
}

int main()
{
    // 定义了一个结构体变量 test_middle,并使用 register_test 宏对其进行声明
    register_test() test_middle = {
        .test_fun = sum,  // 将 sum 函数赋值给 test_fun 成员
    };
    test_middle.test_fun();  // 调用 test_fun 成员函数
    return 0;
}

代码解释

1. `#include <stdio.h>`:包含了标准输入输出函数的头文件。
2. `#include <stdlib.h>`:包含了一些标准库函数的头文件。
3. `struct test`:定义了一个结构体类型 test,其中有一个函数指针成员 test_fun。
4. `#define register_test(test_func) ...`:使用宏定义定义了一个宏 register_test,用于快速声明结构体变量。
5. `void sum(void)`:定义了一个无返回值、无参数的函数 sum,用于计算两个数的和并输出结果。
6. `int main()`:程序的入口函数。
7. `register_test() test_middle = { ... };`:声明了一个结构体变量 test_middle,并使用 register_test 宏进行声明。
8. `.test_fun = sum`:将 sum 函数赋值给 test_fun 成员。
9. `test_middle.test_fun();`:通过结构体变量 test_middle 调用 test_fun 成员函数。
10. `return 0;`:返回程序执行成功的标志。
posted @ 2023-10-23 15:41  代代代码  阅读(5)  评论(0编辑  收藏  举报