#include <stdio.h> #include <stdlib.h> typedef struct user_t { int t; char *userName; void (*setUserName)(char* name,int); void (*print)(); }UserT; /*重点在这里*/ #define THIS_CALL int ex; {_asm mov ecx, ebp} {_asm sub eax, ecx} {_asm sub eax, 4h} {_asm mov ecx, eax} {_asm mov eax, ebp} {_asm go_sub :} {_asm add eax, 4} {_asm sub ecx, 4h} {_asm jg go_sub} {_asm mov ecx, esp} {_asm mov esp, eax} {_asm pop eax} {_asm mov ex, eax} {_asm mov esp, ecx} #define FUNC(Type,f,arg) f##arg { THIS_CALL Type this; this = (Type)ex; //GO语言定义方式 #define func(Type,f,arg,rt) rt f##arg { THIS_CALL Type this; this = (Type)ex; func (UserT*, setUserNamae, (char *name, int a),void) this->userName = name; this->userName = name; } func (UserT*, print, (), void) printf("%s ", this->userName); } #define CALL_S(e) size_t addr = e; {_asm mov eax, esp} {_asm push addr} #define $$(e) {CALL_S(e);} (0, e) void initUser(struct user_t* u) { u->setUserName = setUserNamae; u->print = print; } int main() { struct user_t User;initUser(&User); $$(&User)->setUserName("张飞", 2); $$(&User)->print(); while (1){} }
【原创】C语言面向对象,this call C语言实现class
博主长期对外收徒,欢迎咨询。
《编程语言设计和实现》《MUD游戏开发》《软件破解和加密》《游戏辅助外挂》《JAVA开发》
以上课程非诚勿扰!
=================================
QQ:184377367
GOLang Q群:6848027
电子电路入门群 436173132
C/C++/QT群 1414577
单片机嵌入式群 306312845
MUD/LIB/巫师交流群 391486684
java/springboot/hadoop/ 群 4915800
WEB前端开发交流群 214737701
操作系统研发群:15375777
Linux公社Q群:812742841
汇编/辅助/破解新手群:755783453
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。