PC上のファイルとディレクトリを作成/削除/名前変更/検索できる小さなクラスを書いています。
私はクラスを正常に作成し、Linuxで実行しました。
MinGWで同じクラスコードを実行しようとすると、エラーが発生していました。Linuxではmkdir関数、Cygwinには2つの引数(ディレクトリ名、モード権限)がありますが、MinGWでは1つの引数(ディレクトリ名)しかありません。
私の質問は次のとおりです。a)両方のOSでコードを機能させるための最良の方法は何ですか。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;
}