1

これまでのところ、C ++での開発はすべてWindowsを対象としていましたが、いつかLinuxを対象にすることを常に心に留めていました。したがって、クロスプラットフォームライブラリを選択し、コードを可能な限り移植可能に保つ(または移植性のないコードの代替実装を提供する)必要があることを認識しています。したがって、この質問はコードコンパイルの問題とは関係ありません。

LinuxとWindowsの両方をターゲットにするときに開発者が直面する一般的な問題は何ですか?特に、ただしこれらに限定されません。

  1. 構成ファイルを処理するためのベストプラクティス。Windowsでは、これはかなり恣意的であるように思われます。ソフトウェアが構成をプログラムフォルダー内、ユーザーのフォルダー(appDataの下)、およびレジストリに保存するのを見てきました。Linuxでは、専用の構成フォルダー(/ etc)に重点が置かれているようです。コードでこれらの違いをどのように処理する必要がありますか?場所をハードコーディングしますか、それとも相談できるシステム定義の関数がありますか?

  2. (1)と同じですが、ロギング用です。

  3. プロジェクトファイルの同期を維持するにはどうすればよいですか?たとえば、Visual Studioプロジェクトファイルで何かを更新する場合、通常、作業しているLinux環境で同等のものを手動で更新する必要がありますか、それともこれを回避するために一般的に使用される方法がありますか?

  4. コード内のプラットフォーム実装の違いを処理するための最良の方法は何ですか?を使用する必要が#ifdefありますか、それともプラットフォーム固有のコードを別のファイルに保持し、プロジェクトに含めるファイルを指定させる必要がありますか?

  5. 私が考えたり研究したりし始めるべきだと思っていないことは他にありますか?

4

2 に答える 2

2

s を使用して難しい作業を行うことも、#ifdefほぼすべての問題を解決する Qt などのクロスプラットフォーム ライブラリを使用することもできます。

5 - また、行末、ファイル エンコーディング、およびいずれかのパス区切り文字にも注意する必要があります。

于 2013-01-14T20:08:09.580 に答える
0

1 と 2 については、ログと構成ファイルをプログラム フォルダーまたは別の相対的な場所に保存し、この方法で移植できるようにするのが最善の方法だと思います。

5 の場合 - 初期化も問題になる可能性があります。初期化されていない変数が表面化する可能性があります。

于 2013-01-14T20:07:55.793 に答える