#define Dyn_Mem_Deluxe_In(...) VA_ARGS Dyn_Mem_In(func, sizeof(struct {VA_ARGS}))这句代码的意思
时间: 2023-08-16 20:06:26 浏览: 102
sizeof计算struct大小
4星 · 用户满意度95%
这是一个 C 语言的宏定义,它的作用是动态分配内存并初始化。具体来说,宏定义中使用了可变参数宏和匿名结构体,其展开后的代码类似如下:
```
Dyn_Mem_Deluxe_In(int a, float b)
Dyn_Mem_In(func, sizeof(struct {int a; float b;}))
```
其中,`Dyn_Mem_In` 是一个函数调用宏,用于动态分配内存并初始化,它接受两个参数:函数指针和内存块大小。而 `sizeof(struct {VA_ARGS})` 则是一个匿名结构体的定义,其中 VA_ARGS 是可变参数,表示该结构体包含了所有传入的参数类型和变量名。因此,`Dyn_Mem_In` 就可以根据传入的参数类型和变量名,动态分配所需大小的内存,并将其初始化为零。
最终,`Dyn_Mem_Deluxe_In` 宏就是将可变参数 `VA_ARGS` 传递给 `Dyn_Mem_In` 函数,同时计算出所需的内存大小,并返回分配的内存指针。
阅读全文