0 c++ typedef std libc++ c++-chrono
在libc ++中,std :: chrono :: microseconds定义为
std::chrono::duration<long long, std::micro>
Run Code Online (Sandbox Code Playgroud)
对于64位平台,long long的定义导致与int64_t的冲突,因为之前已为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>>;
Run Code Online (Sandbox Code Playgroud)
我如何达到相同的目的。Typdef和#define在具有std ::和chrono ::的同时给出语法错误,这是我们希望重新定义std :: chrono :: microseconds吗?
你不能 这些类型不归您所有。那就是它们在命名空间中的含义std。这不是您的代码。
如果要定义自己的别名,请在自己的名称空间中进行定义。
除了别的什么,您的工具链可能以特定方式实现标准库可能是有原因的。即使允许,您也可能无法不重写标准库实现的其他部分而“使其像gnustl版本”。
如果您认为libc ++在64位平台上存在一个导致std::chrono::microseconds无法编译的错误,则可以向libc ++开发人员提出一个错误。但是,您应该确保您的理论首先是正确的,从天文学角度来看,这是不可能的。检查其他代码以查找原因。
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |