title: How can "typedef" make my code portable?
body: <p>I read that most programmers use typedef to ensure the portability.</p>
  
  <p>when I write for example:  </p>
  
  <p><code>typedef int int16_t</code></p>
  
  <pre><code>typedef unsigned int uint16_t
  </code></pre>
  
  <p>As long as int16_t is the same as int (the only change is the name) so where is the portability here?! why shouldn't I use int directly ?!</p>
  
  <p>another question: On different microcontrollers the size of int isn't constant, for example in <code>AVR 32</code> size of int = 4 byte, while in <code>AVR 8-bit</code>, size of int = 2 bytes</p>
  
  <p>What does it depend on and why does it change with the change of microcontroller?!</p>