2013-01-14 92 views
1

到目前爲止,我在C++中的所有開發都是針對Windows的,但是我始終認爲我有朝一日會針對Linux。因此,我知道需要選擇跨平臺的庫,並儘可能保持我的代碼的可移植性(或爲不可移植的代碼提供替代實現)。因此這個問題不涉及代碼編譯問題。Windows與Linux上的C++ - 常見問題?

我想知道,開發人員在面向Linux和Windows時會遇到哪些常見問題?特別是但不限於:

  1. 處理配置文件的最佳做法。在Windows上,似乎這是相當隨意的 - 我已經看到軟件將其配置存儲在程序文件夾,用戶文件夾(appData下)和註冊表中。在Linux上,它似乎對專用配置文件夾(/ etc)的權重更大。我應該如何處理我的代碼中的這些差異?我是否對位置進行硬編碼,或者是否有一些我可以諮詢的系統定義的功能?

  2. 與(1)相同,但用於記錄。

  3. 如何讓我的項目文件保持同步?例如。如果我在Visual Studio項目文件中更新了某些東西,我通常需要在我工作的任何Linux環境中手動更新等價物,還是有避免這種情況的常用方法?

  4. 在我的代碼中處理平臺實現差異的最佳方式是什麼?我應該使用#ifdef嗎?還是應該將平臺特定的代碼保存在單獨的文件中並讓項目指定包含哪些文件?

  5. 還有什麼我還沒有想到我應該開始考慮/研究?

回答

2

你可以用#ifdefs來完成工作,或者你可以使用跨平臺的庫,比如Qt,它可以解決幾乎所有的問題。

5 - 你也應該注意行結束符,文件編碼和路徑分隔符字符。

0

1和兩個,我認爲最好的辦法是將日誌和配置文件存儲在程序文件夾或其他相對位置,並使其便攜本辦法。

for 5. - 初始化也可能是一個問題。未初始化的變量可能會出現。

+0

但是對於1和2,如果按照你的建議,我是不是違背了在一箇中心位置存儲配置文件的常見Linux慣例?我能想到的一個負面後果是,它使得用戶難以在系統範圍內將配置從一臺計算機複製到另一臺計算機。 – JBentley

+0

我認爲把配置文件和日誌放在程序文件夾下是很常見的。如果你想要一個跨平臺的方式來做到這一點,我認爲它是一個好方法。 – WeaselFox

+0

@Weasel在無法寫入程序文件夾時會中斷 –