是否有一个很好的在线教程来编写便携式C?

时间:2011-04-10 13:33:03

标签: c solaris portability conditional-compilation

我正在使用便携式C中的一些工具,这些工具在Windows Visual Studio 2008和基于#ifdef _WIN32的Ubuntu Linux中使用gcc,但是添加对Solaris的支持似乎比较棘手,特别是如果我想支持cc以及gcc

对于一个示例,我有一些代码sprintf进入已分配的内存缓冲区,在Linux / gcc上使用vasprintf,在Windows / MSVC上使用_vscprintf / vsprintf。在我可以使用vsnprintf的Solaris上都没有,但我不知道要添加到#ifdef的内容,或者我是否应该转移到其他地方。

希望我不必动手配置cygwin,mingw。

2 个答案:

答案 0 :(得分:1)

进行这样的测试的唯一真正方法是使用类似gnu的autoconf + configure(或者只是普通配置)。然后你可以测试看看vsprintf是否存在,对vasprintf的测试失败,对vsnprintf的测试失败等等。然后你可以得到configure以定义HAS_VSPRINTF等在你的代码中使用,并在正确的地方写一个包装器函数功能

这将是最便携的测试方式,也是最便携的方式来编写解决方案,虽然也许最麻烦 - 但它绝对是我为生产代码所做的事情。

答案 1 :(得分:1)

autoconf(1)手册有section on portable C programming