命名空间存在,但仍存在声明冲突? 我正在使用C++包装库,并试图通过RCPP将其与R集成。我是一个经验丰富的编码器,但不是在C++具体。我试图解决一个声明冲突的问题。编译器错误消息复制如下: ../inst/include/HDFql/H5public.h:156:19: error: conflicting declaration ‘typedef long long int ssize_t’ typedef long long ssize_t;

命名空间存在,但仍存在声明冲突? 我正在使用C++包装库,并试图通过RCPP将其与R集成。我是一个经验丰富的编码器,但不是在C++具体。我试图解决一个声明冲突的问题。编译器错误消息复制如下: ../inst/include/HDFql/H5public.h:156:19: error: conflicting declaration ‘typedef long long int ssize_t’ typedef long long ssize_t;,c++,namespaces,hdfql,C++,Namespaces,Hdfql,() 基本上,HDFql和Rcpp都有typedefs表示long,并且它们相互冲突。然而,HDFql包装器定义了它自己的名称空间,所以我不明白为什么我首先会遇到这种冲突(我认为名称空间就是为了这个!)。我希望C++大师能帮助我解决两个问题: 为什么即使库使用名称空间,也会发生这种冲突?(编辑:@Igor在评论中回答了这个问题) 假装我是HDFQL C++包装器的开发者(我不是)。strong>如何更改包装库或名称空间结构,以避免发生这些类型的冲突?(编辑:可能根据为HDFql编写第二个包装?)

()

基本上,HDFql和Rcpp都有
typedef
s表示
long
,并且它们相互冲突。然而,HDFql包装器定义了它自己的名称空间,所以我不明白为什么我首先会遇到这种冲突(我认为名称空间就是为了这个!)。我希望C++大师能帮助我解决两个问题:

  • 为什么即使库使用名称空间,也会发生这种冲突?(编辑:@Igor在评论中回答了这个问题)
  • 假装我是HDFQL C++包装器的开发者(我不是)。strong>如何更改包装库或名称空间结构,以避免发生这些类型的冲突?(编辑:可能根据为HDFql编写第二个包装?)
    如果你有任何见解,我将不胜感激

    >我很肯定,命名库的论坛/问题跟踪器比一般的C++讨论更适合于在命名空间内定义的.<代码> SsiZeZt。您是否使用
    使用名称空间\u name?是,
    HDFql.hpp
    定义名称空间。但是
    ssize\u t
    声明位于不同的头文件
    H5public.h
    和全局命名空间中。此外,它在
    extern“C”
    一节中,这表明它是可以从C中使用的,因此不可能在命名空间中。而且
    ssize\u t
    也是可以由十几个系统头声明的东西。@SergeyA,我同意为了解决这个问题,我应该特别寻找图书馆论坛/问题跟踪者,但我试图从总体上理解这个问题。