16

我在将 Linux 工具移植到 Windows 时遇到问题。我在 Windows 系统上使用 MinGW。我有一个处理所有输入/输出的类,其中是这一行:

mkdir(strPath.c_str(), 0777); // works on Linux but not on Windows and when it is changed to
_mkdir(strPath.c_str()); // it works on Windows but not on Linux

任何想法我可以做什么,以便它在两个系统上都可以工作?

4

3 回答 3

31
#if defined(_WIN32)
_mkdir(strPath.c_str());
#else 
mkdir(strPath.c_str(), 0777); // notice that 777 is different than 0777
#endif
于 2012-04-27T19:34:24.580 回答
3

您应该能够使用条件编译来使用适用于您正在编译的操作系统的版本。

另外,您真的确定要将标志设置为 777(如在大范围内,请在此处存放您的病毒)?

于 2012-04-27T19:34:33.443 回答
1

您可以使用一些预处理器指令有条件地编译,您可以在此处找到一个非常完整的列表:C/C++ 编译器预定义宏

#if defined(_WIN32)
    _mkdir(strPath.c_str());
#elif defined(__linux__)
    mkdir(strPath.c_str(), 0777);
// #else more?
#endif
于 2012-04-27T19:35:31.930 回答