我正在使用便携式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。
答案 0 :(得分:1)
进行这样的测试的唯一真正方法是使用类似gnu的autoconf + configure(或者只是普通配置)。然后你可以测试看看vsprintf是否存在,对vasprintf的测试失败,对vsnprintf的测试失败等等。然后你可以得到configure以定义HAS_VSPRINTF等在你的代码中使用,并在正确的地方写一个包装器函数功能
这将是最便携的测试方式,也是最便携的方式来编写解决方案,虽然也许最麻烦 - 但它绝对是我为生产代码所做的事情。
答案 1 :(得分:1)
autoconf(1)
手册有section on portable C programming。