title: GCC error message: attempt to use poisoned "TARGET_I386"
body: <p>I'm modifying Qemu's source code, created a file like this</p>
  
  <pre><code>#if defined(TARGET_I386)
      /* some defines */
  #elif defined(TARGET_ARM)
      /* some other defines */
  #endif
  </code></pre>
  
  <p>This file is then included in <code>vl.c</code>, and gcc reports the following error message:</p>
  
  <pre><code>error: attempt to use poisoned "TARGET_I386"
  error: attempt to use poisoned "TARGET_ARM"
  </code></pre>
  
  <p><code>TARGET_I386</code> is defined in another header file and is used in other qemu's source file.</p>
  
  <p>What's the meaning of this error message?</p>
  
  <p><strong>Update:</strong></p>
  
  <p>As mentioned by Matthias Werner, these defines should not be used for target independent code. These poison identifies are defined in <code>poison.h</code></p>