在libc ++中,std :: chrono :: microseconds定义为
std::chrono::duration<long long, std::micro>
对于64位平台,long long的定义导致与int64_t的许多冲突,因为先前为该代码定义了相同的代码。
在gnustl中,以前的std :: chrono :: microseconds是用in64_t类型定义的。
我想将现有的微秒定义改写为gnustl版本,例如:
typedef std::chrono::duration<int64_t, std::ratio<1, 1000000>> std::chrono::microseconds;
or
#define std::chrono::microseconds std::chrono::duration<int64_t, std::ratio<1, 1000000>>;
我如何实现相同的目标。 Typdef和#define在具有std ::和chrono ::的同时出现语法错误,这是我们希望重新定义std :: chrono :: microseconds?
答案 0 :(得分:5)
不能。这些类型不归您所有。这就是它们位于命名空间std
中的含义。这不是您的代码。
如果要定义自己的别名,请在自己的名称空间中定义。
除了别的什么以外,您的工具链可能以特定方式实现标准库可能是有原因的。即使允许,您也可能无法不重写标准库实现的其他部分而“使其像gnustl版本”。
如果您认为libc ++在64位平台上存在错误,导致std::chrono::microseconds
无法编译,则可以向libc ++开发人员提出错误。但是,您应该确保您的理论首先是正确的,从天文学角度来看,这是不可能的。检查其他代码以查找原因。