2011-04-10 50 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