我正在爲GBA開發自制遊戲,並且正在考慮將它移植到PC(可能使用SDL)。 我之前沒有處理過多平臺支持的問題,所以我沒有任何經驗。多平臺支持,預處理器或與單個庫鏈接
我想出了兩種可能的解決方法,但都有缺點,我不知道是否有更好的解決方案,我錯過了。
首先會使用預處理器。一個頭文件將被包含在所有文件中,這些文件將被包含在#define GBA
中,並且基於它是否被定義,將包括適當的頭文件,並且針對該平臺編譯適當的特定於平臺的代碼。
我會實現它像
/* GBA definition is in platform.h */
/* Example.c */
void example()
#ifdef GBA
{
/* GBA specific implementation goes here */
}
#else
{
/* PC specific implementation goes here */
}
#endif
我看到這裏是一個大型項目的缺點,這會造成非常雜亂而且是在公然的那種醜陋而難以閱讀。
我能想到的另一個選擇是爲每個平臺創建靜態庫。因此,這兩種平臺的主要源代碼都是相同的,同時開發更容易,並且在爲GBA或PC構建時,將指定適當的庫和設置,就是這樣。
明顯這裏的缺點是,如果有需要在庫中的一些執行情況的變化,如果有什麼需要添加,或任何真正關於庫,它需要保持並不斷重建,沿與主要的實際計劃。
如果有更好的方法來解決這個問題,它會是什麼? 如果我提到的方法是標準的做法,哪種方法對長期發展更普遍/更好?
圍棋與庫解決方案。從長遠來看,它將更易於維護。 –