我正在使用HDFql 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;
基本上,HDFql 和 Rcpp 都有typedefs forlong long并且它们发生冲突。但是,HDFql 包装器在这里定义了它自己的命名空间,所以我不明白为什么我首先会遇到这种冲突(我认为这就是命名空间的用途!)。我希望 C++ 大师可以帮助我解决两个问题:
- 即使库使用命名空间,为什么会发生这种冲突?(编辑:@Igor 在评论中回答了这个问题)
- 假装我是 HDFql C++ 包装器的开发者(我不是)。我将如何更改包装库或命名空间结构,以使这些类型的冲突不会发生?(编辑:也许根据这个答案为 HDFql 编写第二个包装器?)
我很感激你有任何见解!