make compatible with C89, C99, C++
update readme