Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define Class(class_name) struct class_name;typedef struct class_name class_name; struct class_name
- #define AddMethod(class_name,method_name) void (*method_name)(struct class_name *)
- #define MakeObject(class_name,object_name) struct class_name object_name
- #define BindMethod(object_name,method_name) object_name.method_name=&method_name
- struct Args {
- int x;
- int y;
- };
- Class(Person) {
- char name[100];
- int age;
- struct Args Arguments;
- AddMethod(Person,increment_age);
- AddMethod(Person,print_me);
- AddMethod(Person,print_addxy);
- };
- void increment_age(struct Person *self) {
- self->age++;
- }
- void print_me(struct Person *self) {
- printf("\nname:%s\nage%i\n",self->name,self->age);
- }
- void print_addxy(struct Person *self) {
- printf("\nx+y:%d\n",self->Arguments.x+self->Arguments.y);
- }
- int main(int argc, const char * argv[]) {
- MakeObject(Person,p1);
- BindMethod(p1,increment_age);
- BindMethod(p1,print_me);
- BindMethod(p1,print_addxy);
- strcpy(p1.name,"Jhon Doe");
- p1.age=22;
- MakeObject(Person,p2);
- BindMethod(p2,increment_age);
- BindMethod(p2,print_me);
- strcpy(p2.name,"Marry Joan");
- p2.age=33;
- p1.increment_age(&p1);
- p1.print_me(&p1);
- p1.Arguments.x=3;
- p1.Arguments.y=2;
- p1.print_addxy(&p1);
- p2.increment_age(&p2);
- p2.print_me(&p2);
- printf("end\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement