0

Windows 7 で C++を使用して空のフォルダーを削除したいのですが、できません。代わりremove()に試してみましたが、フォルダが削除されました! とはいえ、私が使わない理由はAndroidのせいです。Android のライブラリ プロジェクトでは、「direct.h」ヘッダーをインクルードできないため、 も使用できません。Windows とは異なり、この機能は Android でうまく機能します。理由がわかりません。rmdir()remove()rmdir()rmdir()remove()

なぜこれが起こっているのか誰にも分かりますか?

または、Windows と Android の両方で機能する他の機能はありますか?

4

1 に答える 1

4

これは、クロスプラットフォーム プログラムを作成する際によくある問題です。

ライブラリが必要な抽象化を提供できる場合があります。たとえば、Boostには、まったく同じコードを使用して複数のプラットフォームでファイルを列挙したり、ディレクトリを操作したりできるファイルシステム ライブラリがあります。

また、通常、現在コードをビルドしているコンパイラを検出できるシンボルが定義されています。希望どおりの機能がない場合でも、独自のものを定義できます。

FooOS と BarOS という名前の 2 つの異なる架空のオペレーティング システム用にソフトウェアをビルドする必要があるとします。私は 2 つの記号を発明しようとしていFOO_OSますBAR_OS。私のコードでは、次のようなことができます。

#ifdef FOO_OS
#include <foo_stuff.h>
#elseif BAR_OS
#include <bar_stuff.h>
#endif

void do_something()
{
#ifdef FOO_OS
    do_it_this_way();
#elseif BAR_OS
    do_it_that_way();
#endif
}

ここで、FOO_OSまたはを定義する必要がありますBAR_OS。これは、IDE のプロジェクト構成またはコンパイラのコマンド ラインで実行できます。あなたの投稿には詳細が含まれていないので、Google を使用して特定の状況を調べてください。

コードをコンパイルするときに、ソースを通過してこれらの条件文を適用する前処理ステップがあります。次のパスは、実際にコードをコンパイルします。たとえば、Visual Studio のプリプロセッサに関するドキュメントを次に示します。

于 2015-09-25T00:29:15.590 に答える