time to turn to ansi C
#include "stdio.h"
//typedef struct {void *_, __;} interface;
typedef void * interface[2];
#define DATA(interface) *(void **)((char *)(interface) + sizeof (void *))
#define type typedef
struct Reader{
int (*read)(void *, char *p, int n);
};
struct Writer{
int (*write)(void *, const void* s, int n);
int (*flush)(void *);
};
type struct B{
int k;
}B;
int readB(B *t, char *p, int d){
return t->k + d;
}
struct Reader Reader_B = {
readB
};
type struct C{
int k;
}C;
int writeC(C* t, const void* s, int n){
return t->k - n;
}
int flushC(C *t){
return t->k;
}
struct Writer Writer_C = {
writeC,
flushC
};
int fr(struct Reader** a){
int d = (*a)->read(DATA(a), 0, 8);
return d;
}
int fw(struct Writer** a){
int d = (*a)->write(DATA(a), 0, 8);
int r = (*a)->flush(DATA(a));
return d;
}
struct Closer{
int (*close)(void *);
};
type struct D{
int a;
struct B B;
struct C C;
}D;
int closeD(D *t){
return t->a;
}
struct Closer Closer_D={
closeD
};
int fc(struct Closer** closer){
int d = (*closer)->close(DATA(closer));
return d;
}
int main(int argc, char *argv[]){
B b = {3};
interface rd = { &Reader_B, &b };
int e= fr(rd);
C c = {9};
interface writer = {&Writer_C, &c};
int k = fw(writer);
D d = {
5, {7},{8}
};
{
interface rd = {&Reader_B, &d.B},
writer = {&Writer_C, &d.C},
closer = {&Closer_D, &d};
e= fr(rd);
k = fw(writer);
e = fc(closer);
}
e = writeC(&d.C, 0, 18);
printf("%d", e);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理