命名空间存在但仍然存在声明冲突?

时间:2018-04-13 19:11:25

标签: c++ namespaces hdfql

我正在使用HDFql C ++包装器库并尝试通过Rcpp将它与R集成。我是一名经验丰富的编码员,但不是专门用C ++编写的。我提出another post关于尝试解决声明冲突的问题。编译器错误消息复制如下:

../inst/include/HDFql/H5public.h:156:19: error: conflicting declaration ‘typedef long long int ssize_t’ typedef long long ssize_t;

Link to the actual declaration in the header file

基本上,HDFql和Rcpp都为typedef long long而且它们发生冲突。但是,HDFql包装器定义了它自己的命名空间on this line right here,所以我不明白为什么我首先得到这个冲突(我认为这是命名空间的用途!)。我希望C ++大师可以帮我解决两个问题:

  1. 为什么即使图书馆使用名称空间也会发生这种冲突?编辑:@Igor在评论中回答了此问题
  2. 假装我是HDFql C ++包装器的开发人员(我不是)。 如何更改包装器库或命名空间结构以便不会发生这些类型的冲突?编辑:根据this answer可能为HDFql编写第二个包装器?< / em>的)
  3. 我很感激你的任何见解!

0 个答案:

没有答案