次の関数でエラーが発生するコードをコンパイルしています。
inline char *align(char *var, DataType_e type)
{
return (DataTypeSize[type] == 0) ? var :
(char*) (((unsigned int)(var) + DataTypeSize[type]-1) /
DataTypeSize[type] * DataTypeSize[type]);
}
次のエラーは、 "(unsigned int)(var)" と一致しています。
error: cast from 'char*' to 'unsigned int' loses precision
「unsigned int」を「unsigned long」に変更すると、コンパイルは機能しますが、プログラムの実行中に期待した結果が得られません。この問題を解決する方法について何か考えはありますか?