栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言链式编程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言链式编程

c语言链式编程

因为目前在玩rust,觉得rust的链式编程十分优雅,考虑c语言是否也可以优雅地进行链式编程。

头文件

#ifndef BUILDER_H
#define BUILDER_H

typedef struct Some
{

    int id;
    char *name;

} Some;



struct SomeBuilder
{

    struct SomeBuilder *(*new_)(Some **, int ,char*);
    struct SomeBuilder *(*change_id)(Some **, int);
    struct SomeBuilder *(*clear)(Some **);

} ;




#endif

实现文件

#include 
#include 
#include 
#include "builder.h"




struct SomeBuilder * const  builder ;

static struct SomeBuilder *new_(Some **some, int id, char *name){


    *some = (Some*)malloc(sizeof(Some));
    (*some)->id = id;
    (*some)->name = (char*)malloc(sizeof(char[30]));
    strcpy((*some)->name,name);
    printf("Some创建成功n");
    printf("id = %d n",(*some)->id);
    printf("name = %s n",(*some)->name);
    return builder;



};
static struct SomeBuilder *change_id(Some **some, int new_id){

    (*some)->id = new_id;
    printf("id修改成功n");
    printf("new id = %dn",(*some)->id);
    return builder;
    




};
static struct SomeBuilder *clear(Some **some){

    free((*some)->name);
    free(*some);
    printf("内存清理成功n");
    return builder;





};
static struct SomeBuilder  Builder={new_,change_id,clear};
struct SomeBuilder  *const builder  = &Builder;

优雅地调用

#include "builder.h"


extern struct SomeBuilder *builder;
int main(){
    Some* a;
    builder->new_(&a,10,"hello world")
           ->change_id(&a,100)
           ->clear(&a);

    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011581.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号