mkdir Windows vs Linux

时间:2012-04-27 19:29:03

标签: c++ windows linux mkdir

将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

我可以做什么,以便它可以在两个系统上运行?

3 个答案:

答案 0 :(得分:27)

#if defined(_WIN32)
_mkdir(strPath.c_str());
#else 
mkdir(strPath.c_str(), 0777); // notice that 777 is different than 0777
#endif

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

您可以使用一些预处理程序指令进行有条件的编译,这是一个非常完整的列表,您可以在此处找到它:C/C++ Compiler Predefined Macros

#if defined(_WIN32)
    _mkdir(strPath.c_str());
#elif defined(__linux__)
    mkdir(strPath.c_str(), 0777);
// #else more?
#endif