c 基础模板类使用
时间: 2024-09-08 08:04:47 浏览: 40
蓝桥杯电子类单片机省赛代码模板
5星 · 资源好评率100%
C语言并不支持类模板,但是可以使用结构体来实现基础模板类。下面是一个基础模板结构体的例子:
```
typedef struct {
void *data;
size_t size;
} my_template_t;
#define MY_TEMPLATE(T) \
my_template_t
#define MY_TEMPLATE_INIT(T, value) \
{ \
.data = &(T){value}, \
.size = sizeof(T), \
}
#define MY_TEMPLATE_GET(T, template) \
(*(T *)((template).data))
#define MY_TEMPLATE_SET(T, template, value) \
do { \
T *ptr = (T *)((template).data); \
*ptr = (value); \
} while (0)
```
使用方法如下:
```
int main() {
MY_TEMPLATE(int) t = MY_TEMPLATE_INIT(int, 123);
printf("%d\n", MY_TEMPLATE_GET(int, t));
MY_TEMPLATE_SET(int, t, 456);
printf("%d\n", MY_TEMPLATE_GET(int, t));
return 0;
}
```
输出结果为:
```
123
456
```
这个例子中,我们定义了一个名为`my_template_t`的结构体,它包含了一个`void`指针和一个`size_t`类型的成员变量。`MY_TEMPLATE`宏定义了一个基于`my_template_t`结构体的模板类型,`MY_TEMPLATE_INIT`宏用于初始化模板类型的实例,`MY_TEMPLATE_GET`和`MY_TEMPLATE_SET`宏用于获取和设置模板类型实例中的值。
阅读全文