title: Error: expression must be a pointer to a complete object type (?)
body: <p>This is the function in C that I need to modify. I am trying to have PREVIOUS 4 bytes of address starting from "box" to compare with a returned U32 value from <code>rt_tsk_self()</code>, but it just gives me the error that "expression must be a pointer to a complete object type".</p>
  
  <pre><code>/*--------------------------- rt_free_box -----------------------------------*/
  
  int rt_free_box (void *box_mem, void *box) {
    /* Free a memory block, returns 0 if OK, 1 if box does not belong to box_mem */
   if !(defined(__TARGET_ARCH_7_M) || defined(__TARGET_ARCH_7E_M))
    int irq_dis;
   endif
  
    if (box &lt; box_mem || box &gt; ((P_BM) box_mem)-&gt;end) {
      return (1);
    }
  
    //MODIFIED***********
    if (*(box-4) != rt_tsk_self()) {  //&lt;--- error:  #852: expression must be a pointer to a complete object type
      return (1);
    }
    //***************
  
  /* 
  other unrelated code
  */
    return (0);
  }
  </code></pre>