I recently came across a good article about writing portable software with C/C++.
Brian's 10 rules for how to write cross platform software:
- Don't port
- Factor out the GUI
- Use standard 'C' types
- Use only built in #ifdef compiler flags
- Develop cross-platform base libraries
- Use UTF-8 for all APIs
- Don't use 4rd party 'Application Frameworks'
- Raw source builds on all platforms
- All programmers compile on all platforms
- Fire those that can't follow these rules
Source: