c语言用宏模拟泛型容器

这两天用c数组的时候觉得每次数组传入函数的时候都要传长度,不方便,所以试了一下在一个结构体里面保存数组和长度然后一起传到函数里面。后来又觉得每换一种数据类型就要重新写一种struct,也麻烦,于是想到用宏来自动生成定义结构体的代码。先来看一下main.c:

//---------------main.c------------------
#include<stdio.h>
#include<stdlib.h>
#include"macroArray.h" //定义了宏的头文件
__ExpendArray(int) //生成包含一个int数组的struct 
__ExpendArray(double) //生成包含一个double数组的struct 
int main()
{
    Array(int) int_array; 
    Array(double) d_array; 

    //初始化两个数组
    IniArr(int,int_array,"2,4,6,8"); 
    IniArr(double,d_array,"2.4,55.3,72.98");

    //打印两个数组
    int_array.print(&int_array);
    d_array.print(&d_array);
    //给double数组末尾添加两个元素
    d_array.addItem(&d_array,24.19);
    d_array.addItem(&d_array,31.5);
    //改变double数组元素的输出格式
    d_array.setFormat(&d_array,"%.2lf");
    //再打印一次
    d_array.print(&d_array);
    return 0;
}

运行结果:

{ 2 4 6 8 }
{ 2.400000 55.300000 72.980000 }
{ 2.40 55.30 72.98 24.19 31.50 }

上面的数组不仅记住了自己的长度,而且还自带了三种方法。下面来看macroArray.h :

#ifndef MACROARRAY_H
#define MACROARRAY_H


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


typedef enum {
  
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值