enable gcc to deal with unaligned address of int/float/double

can't reopen #4 , so send a new PR.

add missing keyword. tested with gcc 4.6.4