无法在C ++中删除空文件夹

时间:2015-09-25 00:09:08

标签: android c++ windows directory delete-directory

我想在Windows 7上使用C ++中的remove()删除空文件夹,但我不能。我尝试了rmdir()而不是remove(),然后删除了该文件夹! 然而,我之所以不使用rmdir(),是因为Android。在Android的图书​​馆项目中,我不能包含" direct.h"标题所以也不能使用rmdir()。与Windows不同,函数remove()在Android上运行良好。我不明白为什么。

有人知道为什么会这样吗?

还是可以在Windows和Android上运行的任何其他功能?

1 个答案:

答案 0 :(得分:4)

在编写跨平台程序时,这是一个非常常见的问题。

有时,库可以提供您需要的抽象。例如,Boost有一个文件系统库,可以使用完全相同的代码在多个平台上枚举文件,操作目录等。

此外,通常会定义符号,允许您检测当前正在构建代码的编译器。即使没有一个能做你想做的事,你也可以定义自己的。

假设您需要为两个名为FooOS和BarOS的虚拟操作系统构建软件。我将发明两个符号FOO_OSBAR_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_OSBAR_OS。这可以通过IDE的项目配置或编译器的命令行来完成。使用Google了解您的具体情况,因为您没有在帖子中包含这些详细信息。

当您编译通过源代码的代码时,有一个预处理步骤,并应用这些条件语句。以下过程实际上编译了代码。 Here is some documentation about Visual Studio's preprocessor, for example.