C/c++ portability