> extern enum { red, green, blue } foo; > int foo = green; > ... > ... > Please explain me what is wrong. You are declaring `foo' twice, this works: extern enum { red, green, blue } foo; int bar = green; int main(void) { printf("bar = %d\n", bar); return 0; }