为什么此static_assert无法在MacOS上编译?奇怪的typeid()问题

时间:2019-05-25 11:25:46

标签: c++ macos types clang

我有我尝试使用clang在64位MacOS上编译的代码。

#include <cstdint>

int main(){
    static_assert(std::is_same<long, int64_t>::value, "");
}

我做了一些检查,long和int64_t都是有符号整数,sizeof()报告它们是8字节长。

这两种类型都必须是同一类型,但是,当我使用typeid()进行检查时,name()给出的结果长为“ l”,而int64_t的结果为“ x”。

这是怎么回事?

如何重写static_assert,使其可在64位Linux和64位MacOS之间移植?


更新

我认为拟议的副本无法回答我的问题。

我在MacOS上检查了“ stdint.h”,它也提到了40、48和56位整数。我相信这与此有关,因为MacOS上的指针distance_type是“ long”。

请重新打开:)

0 个答案:

没有答案