foreach in C

#include <stdio.h>

struct user_s {
  char* name;
  int age;
}
typedef struct user_s user_t;

static const user_t users[] = {
  { .name = "toto", .age = 8 },
  { .name = "titi", .age = 14 },
};

#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))

#define foreach(obj, objs)                                    \
  typeof(objs[0])* obj = objs;                                \
  for(size_t size = ARRAY_SIZE(objs); size > 0; obj++, size--)

int main() {
  //typeof(users[0])* user1 = users;
  const user_t* user1 = users;
  for(size_t size = ARRAY_SIZE(users); size > 0; user1++, size--) {
    printf("%s à %dans\n", user1->name, user1->age);
  }

  foreach(user2, users) {
    printf("%s à %dans\n", user2->name, user2->age);
  }

  return 0;
}