2011-04-10 91 views
3

我有一些工具,我正在使用便携式C在Windows Visual Studio 2008和Ubuntu Linux中基于#ifdef _WIN32工作,但增加对Solaris的支持似乎更棘手,特别是如果我想支持cc以及gcc是否有写可移植的C一个良好的网上教程?

对于一个示例我有一些代码,sprintf s转换它使用vasprintf在Linux/gcc和在Windows/MSVC _vscprintf/vsprintf一个已分配的存储缓冲器。无论是在Solaris上可用,我可以用vsnprintf,但我不知道该怎么添加到我的#ifdef S或我是否应该转移到别的东西。

但愿我不必移动与cygwin的配置,MinGW的。

+0

有许多可用的文章....你看哪个? – 2011-04-10 13:40:30

+0

@米奇小麦:我做了一些谷歌搜索和StackOverflow上搜索,惊讶如何小东西就要到了什么似乎像一个常见问题的问题,所以我决定在这里问其中任何答案将很容易被谷歌为大家发现从现在开始( - : – hippietrail 2011-04-11 05:09:40

回答

1

唯一真正的方式做这样的测试是使用类似GNU的autoconf的配置+(或只是简单的配置)。然后,您可以测试,看是否存在vsprintf中,如若不然测试vasprintf,如若不然测试vsnprintf等。那么你可以得到配置定义HAS_VSPRINTF等以在代码中使用,并写出围绕正确的包装功能功能。

这将是检验的最便携的方式,最便携的方式,然后编写了一个解决方案,但或许也是最麻烦的 - 这肯定会是什么我生产代码做虽然。

+0

我曾经有过学习我的待办事项列表上的autoconf /配置了几年,但我每次看着它的时间,我可以告诉我真的需要抛开时间一大块,再加上我认为它没有与Visual Studio这一点我想支持工作。 – hippietrail 2011-04-11 06:30:25

+1

它不与Visual Studio的工作,但你可以* *做的是使用它来生成的config.h文件(它会做,你只需要做下一个相当标准的MinGW的框),然后发货,以你的MSVS项目。 – 2011-04-11 07:00:59