Я пишу небольшой класс, который может создавать/удалять/переименовывать/искать файлы и каталоги на ПК.портирующий код от Linux до MinGW
Я успешно написал класс и работаю на Linux.
Когда я пытался запустить тот же класс кода в MinGW, он выдавал ошибку. Я мог бы сузить до: Функция mkdir в Linux, Cygwin имеет 2 аргумента (имя каталога, разрешения режима) , но в MinGW есть только один аргумент (имя каталога).
Мой запрос: a) Каков наилучший способ заставить код работать на обеих ОС. b) Хотя я никогда не пользовался, я слышал, что директивы препроцессора могут быть помещены как #ifdefined ..... # endif .. или что-то в этом роде. c) Использует директивы препроцессора хорошую практику программирования. Как я узнал, директивы препроцессора должны использоваться минимально.
Может кто-нибудь помочь мне в этом:
Вот мой код, который работает на Linux и Cygwin:
#include "BioDatabase.h"
#include <dirent.h>
#include <sys/stat.h>
#include <stdio.h>
#include <unistd.h>
BioDatabase::BioDatabase() {
string s = getcwd(NULL,0);
changeDirectory(s,"*");
}
BioDatabase::BioDatabase(string directoryName, string extension)
{
changeDirectory(directoryName, extension);
}
bool BioDatabase::createDirectory(string st)
{
if(mkdir(st.c_str(),0755) == -1)
{
cerr <<endl<<"BOSERR-BioDatabase, createDirectory: Path or file function not found or Permission denied\n\n";
return false;
}
flag =1;
return true;
}
Привет, это предложение сработало для меня. Огромное спасибо за помощь. – Prasad