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;
}



