Thank you for your response. On Mon, 2014-12-29 at 16:05 -0400, Edwin Pujols wrote: > > extern enum { red, green, blue } foo; > > int foo = green; > > ... > > ... > > Please explain me what is wrong. > > You are declaring `foo' twice, This is correct, because 'foo' has external linkage. > this works: > > extern enum { red, green, blue } foo; > > int bar = green; > > int main(void) > { > printf("bar = %d\n", bar); > return 0; > } >