fork download
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. #define YEAR 1
  6. #define MONTH 2
  7. #define DAY 3
  8.  
  9. int& date(int val)
  10. {
  11. static int d[3];
  12. return d[val-1];
  13. }
  14.  
  15. void set_date(int r, int m, int d)
  16. {
  17. int &x = date(YEAR); //?
  18. int f[3] = {r,m,d};
  19. memcpy((void *)&x, (const void *)f, (sizeof(int)*3));
  20.  
  21.  
  22. }
  23.  
  24. int main()
  25. {
  26. date(YEAR) = 2013;
  27. date(MONTH) = 4;
  28. date(DAY) = 1;
  29. cout << date(YEAR) << endl;
  30. cout << date(MONTH) << endl;
  31. cout << date(DAY) << endl;
  32. set_date(2000,1,2);
  33. cout << date(YEAR) << endl;
  34. cout << date(MONTH) << endl;
  35. cout << date(DAY) << endl;
  36.  
  37. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
2013
4
1
2000
1
2