title: Linux C: error of redefinition of in include headers
body: <p>I have a project, which has below header include map:</p>
  
  <pre><code>main.c &lt;- main.h &lt;- tcphelper.h &lt;- tcptest.h &lt;- util.h
                   &lt;- udptest.h    &lt;------------- util.h
  </code></pre>
  
  <p>In <strong>util.h</strong>, I defined a function prototype of <strong>struct cpu_usage</strong>:</p>
  
  <pre><code>void get_cpu_usage(struct cpu_usage *cu);
  </code></pre>
  
  <p>Now when I compile this project by GCC, I have this redefinition error. How do solve this problem?</p>
  
  <p>thanks!</p>
  
  <pre><code>In file included from udptest.h:15:0,
                   from main.h:10,
                   from main.c:7:
  util.h:27:8: error: redefinition of struct cpu_usage
   struct cpu_usage{
          ^
  In file included from tcptest.h:14:0,
                   from tcphelper.h:10,
                   from main.h:9,
                   from main.c:7:
  util.h:27:8: note: originally defined here
   struct cpu_usage{
          ^
  </code></pre>