title: Is storing a byte in a void pointer cross-platform safe?
body: <pre><code>void *vp = (void *)5;
  uint8_t i = (uint8_t)vp;
  </code></pre>
  <p>Will i == 5 on all 8-bit and higher cpus? What are the risks doing this? Is there a better way to have a variable store either an 8-bit integer literal or a pointer in C99?</p>
  <p>I have an array of function pointers to functions that take a void *. Some functions need to interpret the void * as a uint8_t.</p>