Comparing the first element of an enum and a pointer
I just had a very stupid bug in a lighttpd2 feature I was working on, it looked like this:
```c linenums=1 typedef enum { S_DEAD, S_START / … / } con_state;
typedef struct { con_state state; / … / } con;
void foo(con c) { if (S_DEAD == c) { / … */ } }
I obviously wanted to check `c->state`, not `c` - and I didn't even get
a warning from my compiler (neither gcc nor clang). Comparing with
`S_START` resulted in this compiler warning:
```console
[...] warning: comparison between pointer and integer [enabled by default]
My guess is that it doesn’t warn when you compare pointers with 0, and
S_DEAD as the first value in the enum corresponds to the number 0.
Comparing with S_START is similar to comparing with 1.
It should still print a warning of course - an enum member is obviously not a pointer.