title: Avoid name collisions with enum in C (C99)
body: <p><code>enum</code> elements' names are susceptible to overlap/collide with both other enum elements names, variable names, etc...</p>
  
  <pre><code>enum Fruit
  {
      apple,
      orange
  };
  typedef enum Fruit Fruit;
  
  
  enum Color
  {
      red,
      orange // &lt;-- ERROR
  };
  typedef enum Color Color;
  
  
  char apple='a'; // &lt;-- ERROR
  </code></pre>
  
  <p>Is there a C99 compliant solution to avoid collision other than prefixing every enum element name?</p>
  
  <hr>
  
  <p><strong>Side note:</strong> this question has already an answer for C++</p>
  
  <p><a href="https://stackoverflow.com/questions/10869790/best-practices-for-enum-in-c">How to avoid name conflicts for two enum values with the same name in C++?</a></p>
  
  <p>I'm looking for a C99 solution.</p>