fork download
  1. /* Employee.h */
  2. #ifndef EMPLOYEE_H_
  3. #define EMPLOYEE_H_
  4.  
  5. typedef struct EmployeeImpl* Employee;
  6. Employee Employee_Create(const char* name, int age);
  7. void Employee_Delete(Employee e);
  8. const char* Employee_GetName(Employee e);
  9. int Employee_GetAge(Employee e);
  10.  
  11. #endif
  12.  
  13. /* main.c */
  14. #include <stdio.h>
  15. //#include "Employee.h"
  16.  
  17. int main(void)
  18. {
  19. Employee employees[2];
  20. int i;
  21. employees[0] = Employee_Create("Yamada", 25);
  22. employees[1] = Employee_Create("Tanaka", 48);
  23. for (i=0; i<sizeof(employees)/sizeof(Employee); i++) {
  24. printf("Name: %s, Age: %d\n", Employee_GetName(employees[i]),
  25. Employee_GetAge(employees[i]));
  26. Employee_Delete(employees[i]);
  27. }
  28. return 0;
  29. }
  30.  
  31. /* Employee.c */
  32. #include <stdlib.h>
  33. #include <string.h>
  34. //#include "Employee.h"
  35.  
  36. typedef struct EmployeeImpl {
  37. char name[256];
  38. int age;
  39. } EmployeeImpl;
  40.  
  41. Employee Employee_Create(const char* name, int age)
  42. {
  43. Employee e = (Employee)malloc(sizeof(EmployeeImpl));
  44. strncpy(e->name, name, sizeof(e->name));
  45. e->age = age;
  46. return e;
  47. }
  48.  
  49. void Employee_Delete(Employee e)
  50. {
  51. free(e);
  52. }
  53.  
  54. const char* Employee_GetName(Employee e)
  55. {
  56. return e->name;
  57. }
  58.  
  59. int Employee_GetAge(Employee e)
  60. {
  61. return e->age;
  62. }
  63.  
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
Name: Yamada, Age: 25
Name: Tanaka, Age: 48