Can confirm. I have to do this all the time. Some coworkers just delete it, and I have to explain the situation every time when they see in the git blame that I put that semicolon there.
As someone pointed out in another comment, in switch statements you should just start a new scope with
{}. But in actual labels it’s just better to put a load-bearing semicolon. You don’t need to put it in another line though, I just put them like this:int main() { int *a = malloc(sizeof(*a)); if (init_a(a) <= 0) { goto err; } do_something(a); err:; int ret = 0; if (a == NULL) { ret = -1; } free(a); return ret; }question, why is a declaration not a statement?
Can confirm
Is “case expr:” really a label? You could put anything in there, like “case 42:”. I don’t see a label, but maybe I don’t know what a label is in C.
What does assigning
do in C? Is that just default type value or something?it’s the easter egg operator. it assigns a random value to your variable. useful for when you need a quick source of good-enough randomness in computer games (/jk)
Relevant xkcd: https://xkcd.com/221/



