C++ 질문요...도와 주세요 T.T
인터넷을 돌아다니다가 괜찮은 소스를 하나 건졌습니다.
어디 까지나 주관적으로 괜찮은 소스 입니다.
제가 C 로만 계속 작업을 하다가 이번에 C++ 전향을 하고
있는데.... 거시기 소스가 VC++ 7.0 에서 컴파일 된거라
해서 올라 왔는데 UNIX 에서 컴파일이 잘 안되네요
그래서 안되는 부분이
1. )
implicit declaration of function `int Database::_fileno(...)'
BTreeDB.cpp:79: implicit declaration of function `int Database::_filelength(...)'
BTreeDB.cpp:81: implicit declaration of function `int Database::_chsize(...)'
에러인데
_fileno => fileno
_filelength ==> stat 으로 처리하면 될거 같구
근데 _chsize 는 뭐지요 ?
혹시 요 3개를 다 unix 용으로 가지고 있으시면 ^^
공개를 좀 부탁 드려두 ㅋㅋ
2. name lookup of `ctr' changed for new ANSI `for' scoping
BTreeDB.cpp:338: using obsolete binding at `ctr'
이런 메시지가 보입니다.
size_t ctr = 0;
for (ctr = 0; ctr < _minDegree - 1; ctr++)
{
}
이렇게 보이는데 이건 그냥 int 로 바꾸면 문제 없겠지요 ?
1.2 번은 제가 그런데로 처리를 하겠는데
알면서 물어 본다구 하시면 안되요 T.T
3. 요게 문제 입니다.
typedef Database::Ptr<TreeNode> TreeNodePtr; typedef std::vector<TreeNodePtr> TREENODEVECTOR; typedef std::pair<TreeNodePtr, size_t> NodeKeyLocn;
이렇게 정의된 상황에서
NodeKeyLocn BTreeDB::_search(const TreeNodePtr& node, const DbObjPtr& key, compareFn cfn) { NodeKeyLocn ret(TreeNodePtr(), (size_t)-1); }
이 부분에서 에러가 나네요
BTreeDB.cpp: In method `struct Database::NodeKeyLocn Database::BTreeDB::_search(const Database::TreeNodePtr &, const Database::DbObjPtr &, int (*)(const Database::DbObjPtr &, const Database::DbObjPtr &) = 0)':
BTreeDB.cpp:91: parse error before `)'
제 생각에는
NodeKeyLocn ret(node, (size_t)-1);
로 하려구 하는데 고견을 듣구 싶네요 ^^
그것보다 VC 에서 위의 문법이 왜 허용되고
GCC (g++)에서는 허용이 안되는디... 알고 싶어요
참 혹시 이게 BTREE 라이브러리인데......
파일 DB 까지 지원하는거라서........
혹시 필요하시면
http://www.codeproject.com/database/btreedbclass.asp
를 참조하시면 됩니다.
[/code]
_chsize=character size(문자 크기)
_chsize=character size(문자 크기)
1) 번은 아래와 같이 해결 했습니다.#define _chsize
1) 번은 아래와 같이 해결 했습니다.
#define _chsize(Handle,Size) ftruncate((Handle),(Size))
#define _fileno(_dataFile) fileno(_dataFile)
inline int _filelength(int fd)
{
struct stat sb;
return (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
}
역시 google 입니다.
2번은
for (size_t ctr = 0; ctr < _minDegree - 1; ctr++)
{
}
이렇게 되어 있는 부분을
size_t ctr = 0;
for (ctr = 0; ctr < _minDegree - 1; ctr++)
{
}
으로 고치면 되는군요
for( int i ... )
이렇게 선언되면
{
} 안에서 변수 i 를 사용할수 없는거 같네요
근데 아직 3번은 그렇게 뜯어 고쳣는데....
아직 정확한것인지 확신이 안 서요 ~~
대강 고친거 같기는 합니다만.
고견 부탁 드립니다 :)
가자 해외로 ~ .. 돈 벌러.
댓글 달기