title: Assignment makes pointer from integer warning
body: <p>Header:</p>
  
  <pre><code>#ifndef BIT_H_INCLUDE_GUARD
  #define BIT_H_INCLUDE_GUARD
  
  typedef unsigned char byte;
  
  typedef struct{
      size_t* size;
      byte* map;
  } bit;
  
  bit* bdcteate(byte* size);
  
  #endif /* BIT_H_INCLUDE_GUARD */
  </code></pre>
  
  <p>source:</p>
  
  <pre><code>#include &lt;stdlib.h&gt;
  #include "bit.h"
  
  bit* bdcreate(byte* size){
      bit* d;
      byte i;
      size_t s = 0;
      for(i = 1; i &lt; size[0]; i++){
          s += (size_t) size[i];
      }
      if(!(d = malloc(sizeof(bit)))){
          return (bit*) NULL;
      }
      if(!(d-&gt;size = malloc(sizeof(size_t)))){
          return (bit*) NULL;
      }
      if(!(d-&gt;map = malloc(s * sizeof(byte)))){
          return (bit*) NULL;
      }
      *d-&gt;size = s;
      return (bit*) d;
  }
  </code></pre>
  
  <p>main:</p>
  
  <pre><code>#include &lt;stdlib.h&gt;
  #include "bit.h"
  
  void main(void){
      byte *b, i;
      byte size = 9;
      b = malloc((size+1) * sizeof(byte));
      b[0] = size;
      for(i = 1; i &lt;= size; i++){
          b[i] = (b[i-1] + 10);
      }   
  
      bit* dict;
      if(!(dict = bdcreate(b))){ /* warning: assignment makes pointer from integer without a cast */
          exit(EXIT_FAILURE);
      }
      exit(EXIT_SUCCESS);
  }
  </code></pre>
  
  <p>As you see in the commented line, I get "warning: assignment makes pointer from integer without a cast" although I try to explicitly state that I am returning a pointer. </p>
  
  <p>I'm compiling with gcc (<code>gcc -o test main.c bit.c</code>) and the program <strong>seems</strong> to run OK. </p>
  
  <p>Should I ignore that or is it going to come back and bite me while I sleep?</p>