title: error: cast from 'char*' to 'unsigned int' loses precision
body: <p>I am compiling a code, which gives me error in the following function :</p>
  
  <pre><code>inline char *align(char *var, DataType_e type)
  {
      return (DataTypeSize[type] == 0) ? var :
          (char*) (((unsigned int)(var) + DataTypeSize[type]-1) /
                   DataTypeSize[type] * DataTypeSize[type]);
  }
  </code></pre>
  
  <p>The following error comes in line with "(unsigned int)(var)"  :</p>
  
  <pre><code>error: cast from 'char*' to 'unsigned int' loses precision
  </code></pre>
  
  <p>If i change "unsigned int" to "unsigned long", the compilation works but i don't get the expected results while running my program. Any idea on how to resolve this issue ?</p>