我是libzip++包装器的所有者,这是C libzip库周围的基本标题。
我声明了一个libzip命名空间,它主要包装C函数并重命名类型以删除zip_前缀。
C库定义了一个名为struct zip_stat
的结构。我尝试在libzip命名空间中声明一个typedef,如下所示:
namespace libzip {
using Stat = struct zip_stat;
}
在GCC和clang上,没有问题,我可以使用libzip :: Stat作为struct zip_stat的别名。在Visual Studio上,我收到一条错误消息,说我尝试使用未定义的libzip :: zip_stat结构,可能是因为此别名定义尝试解析为libzip :: zip_stat结构。
在Visual Studio上,此声明正在运行,但不适用于gcc(表示这不会声明任何内容)
namespace libzip {
using Stat = struct ::zip_stat;
}
哪种编译器具有正确的行为?我应该使用什么声明?
编辑:我发现还有一个zip_stat函数可能与结构冲突。