enum constants as array indices

This is a discussion on enum constants as array indices within the C Programming forums, part of the General Programming Boards category; Someone said it is dangerous to use enum constants as array indices. Why?
Is it dangerous because some compilers do ...

enum constants as array indices

Someone said it is dangerous to use enum constants as array indices. Why?
Is it dangerous because some compilers do not support the arithmetics of enum constants, like in the case of A[MON+TUE] given enum DAYS{MON, TUE, ...}?
And is there anything wrong in the following?

Any possible improvement?
And from the information-hiding perspective, let's say I do not want the client of the above code know about MON, TUE, etc, i.e. the enum declaration. They need know only about "Monday", "Tuesday", etc. So, I put only the days[] declaration in a header file (i.e. an interface). Is it a good idea? It seems the enum declaration and the days[] declaration are so tightly coupled that they should be together. ???
Thank you.

To me, the only thing the enum buys you is a convenient "totaldays" value that you've used to terminate your for loop, but this doesn't buy you much. There are other better ways to determine the number of elements in an array, without duplicating the data.

In the above, you have to change two things to update one piece of data. For example, if you added "Thursday", you'd have to add it both to the days array, and the DAYS enum. What if you (or someone else maintaining your code) forgets the other one?

The days of the week are already well indexed (you can use the numbers 0 to 6), so you don't really need a redundant ENUM to make things any clearer.