无法删除 C++ 中的空文件夹
Can't remove an empty folder in C++
我想在 Windows 7 上使用 C++ 中的 remove()
删除 空文件夹,但我不能。我尝试 rmdir()
而不是 remove()
然后文件夹被删除了!
尽管如此,我不使用rmdir()
的原因是由于Android。在 Android 的库项目中,我不能包含 "direct.h" header,所以也不能使用 rmdir()
。与 Windows 不同,函数 remove()
在 Android 上运行良好。我不明白为什么。
有人知道为什么会这样吗?
或任何其他适用于 Windows 和 Android 的函数?
编写跨平台程序时,这是一个很常见的问题。
有时,库可以提供您需要的抽象。例如,Boost 有一个文件系统库,可以在多个平台上使用完全相同的代码枚举文件、操作目录等。
此外,通常还定义了一些符号,允许您检测哪个编译器当前正在构建您的代码。即使没有一个可以满足您的需求,您也可以定义自己的。
假设您需要为名为 FooOS 和 BarOS 的两个不同的虚构操作系统构建软件。我要发明两个符号,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 了解您的具体情况,因为您没有在 post.
中包含这些详细信息
编译代码时有一个预处理步骤,通过源代码并应用这些条件语句。接下来的传递实际上编译了代码。 Here is some documentation about Visual Studio's preprocessor, for example.
我想在 Windows 7 上使用 C++ 中的 remove()
删除 空文件夹,但我不能。我尝试 rmdir()
而不是 remove()
然后文件夹被删除了!
尽管如此,我不使用rmdir()
的原因是由于Android。在 Android 的库项目中,我不能包含 "direct.h" header,所以也不能使用 rmdir()
。与 Windows 不同,函数 remove()
在 Android 上运行良好。我不明白为什么。
有人知道为什么会这样吗?
或任何其他适用于 Windows 和 Android 的函数?
编写跨平台程序时,这是一个很常见的问题。
有时,库可以提供您需要的抽象。例如,Boost 有一个文件系统库,可以在多个平台上使用完全相同的代码枚举文件、操作目录等。
此外,通常还定义了一些符号,允许您检测哪个编译器当前正在构建您的代码。即使没有一个可以满足您的需求,您也可以定义自己的。
假设您需要为名为 FooOS 和 BarOS 的两个不同的虚构操作系统构建软件。我要发明两个符号,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 了解您的具体情况,因为您没有在 post.
编译代码时有一个预处理步骤,通过源代码并应用这些条件语句。接下来的传递实际上编译了代码。 Here is some documentation about Visual Studio's preprocessor, for example.