我尝试在Visual Studio 2015社区中从https://github.com/zcbenz/BPlusTree编译代码。可以在gcc中编译代码,但是在VS中,我得到了



结构如下:

struct internal_node_t {
    typedef index_t * child_t;

    off_t parent; /* parent node offset */
    off_t next;
    off_t prev;
    size_t n; /* how many children */
    index_t children[BP_ORDER];
};

引用可以在bpt.cc中随处可见,就像这样
internal_node_t parent;

我真的不明白消息的意思。如何使代码在VS中编译?

一些类型定义更新:
struct key_t {
    char k[16];

    key_t(const char *str = "")
    {
        bzero(k, sizeof(k));
        strcpy_s(k, str);
    }
};
typedef unsigned int     size_t;

struct index_t {
    key_t key;
    off_t child; /* child's offset */
};

我在off_t中使用<sys\types.h>,在#define bzero(ptr, size) memset(ptr, 0, size)中使用marco bzero
我还编写了另一个程序,如下所示:
#include <sys/types.h>
#include <string.h>

#define bzero(ptr, size) memset(ptr, 0, size)

struct key_t {
    char k[16];

    key_t(const char *str = "")
    {
        bzero(k, sizeof(k));
        strcpy_s(k, str);
    }
};
struct index_t {
    key_t key;
    off_t child; /* child's offset */
};



struct internal_node_t {
    typedef index_t * child_t;

    off_t parent; /* parent node offset */
    off_t next;
    off_t prev;
    size_t n; /* how many children */
    index_t children[20];
};

int main() {
    internal_node_t t;
}

这在VS2015中有效。

最佳答案

我发现依赖POSIX类型的代码库不太可能在针对Windows的编译器中进行编译。也许您应该尝试使用Cygwin之类的工具。

例如,off_tkey_t都来自<sys/types.h>。作者甚至不费力地包含此 header ,从而产生了错误的可移植性。

注意:VS2015确实具有off_t。看来实际的问题是特定于Linux的System V IPC(<sys/ipc.h>,它是关心key_t的实际头文件)。

关于c++ - 无法引用默认构造函数-这是VS中的已删除函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32569833/

10-14 20:54