在C中编写跨平台应用程序时应该记住哪些事项?目标平台:基于32位Intel的PC,Mac和Linux.我特别期待Jungle Disk在其USB桌面版中具有的多功能性(http://www.jungledisk.com/desktop/download.aspx)
这类开发有哪些提示和"陷阱"?
我维护了很多年的ANSI C网络库,它被移植到接近30个不同的操作系统和编译器.该库没有任何GUI组件,这使得它更容易.我们最终将任何跨平台不一致的例程抽象为专用源文件,并在适当的情况下在这些源文件中使用#defines.这使得每个平台调整的代码与库的主要业务逻辑保持隔离.我们还广泛使用了typedef和我们自己的专用类型,以便我们可以根据需要轻松地在每个平台上更改它们.这使得端口到64位平台相当容易.
如果您希望拥有GUI组件,我建议您查看GUI工具包,例如WxWindows或Qt(它们都是C++库).
尽量避免使用依赖于平台的#ifdef,因为它们在添加新平台时会呈指数级增长.相反,尝试将源文件组织为一个树,在根目录下使用与平台无关的代码,在"叶子"上使用与平台相关的代码.有一本关于这个主题的好书,多平台代码管理.其中的示例代码可能看起来过时,但书中描述的想法仍然非常重要.