14

というファイルに次のコードがありますRaftLog.cc

#include <algorithm>
#include <fcntl.h>
#include <sys/stat.h>



namespace LogCabin {
namespace Server {
namespace RaftConsensusInternal {

namespace FilesystemUtil = Storage::FilesystemUtil;

namespace {
bool
fileToProto(const std::string& path, google::protobuf::Message& out)
{
    int fd = open(path.c_str(), O_RDONLY);
    if (fd == -1)
        return false;
    else
        close(fd);
    FilesystemUtil::FileContents file(path);

        // more code down here, not useful to the problem.

ただし、コンパイルすると次のようになります。

build/Server/RaftLog.cc: In function ‘bool LogCabin::Server::RaftConsensusInternal::{anonymous}::fileToProto(const string&, google::protobuf::Message&)’:
build/Server/RaftLog.cc:43:17: error: ‘close’ was not declared in this scope
build/Server/RaftLog.cc: In function ‘void LogCabin::Server::RaftConsensusInternal::{anonymous}::protoToFile(google::protobuf::Message&, const string&)’:
build/Server/RaftLog.cc:76:13: error: ‘close’ was not declared in this scope
In file included from ./Server/RaftConsensus.h:17:0,

close()関数が に含まれない理由がわかりません#include <fcntl.h>。誰か助けてくれませんか?さらにコードを含める必要があるかどうかも教えてください。

4

2 に答える 2

28

関数unistd.hを呼び出す場合は、ヘッダー ファイルを含める必要がありますclose

#include <unistd.h>

使用fopen/fclosefdopen/closeペア

于 2013-01-29T03:16:15.713 に答える