notes on writing portable programs in c