我有我尝试使用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”。
请重新打开:)