Why is the size of these two struct different depending on #include <stdbool.h> vs. typedef enum { false, true } bool; ?
#include <stdio.h>
#include <stdbool.h>
//typedef enum { false, true } bool;
struct x {
    bool a;
    int b;
    char c;
};
struct y {
    bool b;
    char a;
    int c;
};
int main(void) {
    struct x x;
    struct y y;
    printf("Size of struct x:\t %zu\n", sizeof(x));
    printf("Size of struct y:\t %zu", sizeof(y));
    return 0;
}
With #include <stdio.h> the results on my machine (Mac, Intel):
Size of struct x:    12
Size of struct y:    8
I assume the size difference (i.e. 8 and 12) here is due to C utilizing some kind of memory structure padding.
With typedef enum { false, true } bool; the result:
Size of struct x:    12
Size of struct y:    12
Note: The question is not about structured padding (read more about that here and here), but why #include <stdbool.h> vs.
typedef enum { false, true } bool; gives different results to the same lines of code.
