Advertisement
amigojapan

sortof classes using macros

Jan 17th, 2017
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.13 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define Class(class_name) struct class_name;typedef struct class_name class_name; struct class_name
  4. #define AddMethod(class_name,method_name) void (*method_name)(struct class_name *)
  5. #define MakeObject(class_name,object_name) struct class_name object_name
  6. #define BindMethod(object_name,method_name) object_name.method_name=&method_name
  7. Class(Person) {
  8.     char name[100];
  9.     int age;
  10.     AddMethod(Person,increment_age);
  11.     AddMethod(Person,print_me);
  12. };
  13.  
  14. void increment_age(struct Person *self) {
  15.     self->age++;
  16. }
  17. void print_me(struct Person *self) {
  18.     printf("\nname:%s\nage%i\n",self->name,self->age);
  19. }
  20.  
  21. int main(int argc, const char * argv[]) {
  22.     MakeObject(Person,p1);
  23.     BindMethod(p1,increment_age);
  24.     BindMethod(p1,print_me);
  25.     strcpy(p1.name,"Jhon Doe");
  26.     p1.age=22;
  27.    
  28.     MakeObject(Person,p2);
  29.     BindMethod(p2,increment_age);
  30.     BindMethod(p2,print_me);
  31.     strcpy(p2.name,"Marry Joan");
  32.     p2.age=33;
  33.    
  34.     p1.increment_age(&p1);
  35.     p1.print_me(&p1);
  36.     p2.increment_age(&p2);
  37.     p2.print_me(&p2);
  38.     printf("end\n");
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement