首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于可移植代码,我应该使用long long还是int64_t?

对于可移植代码,我应该使用long long还是int64_t?
EN

Stack Overflow用户
提问于 2012-09-17 23:06:10
回答 3查看 41K关注 0票数 44

我有一个用C和C++编写的开源代码库。我正在寻找一个整数类型,保证至少64位宽,它可以可靠地编译在大多数OS (英特尔,64位)和Linux盒与开源C和C++编译器,而没有太多的额外工作的最终用户。此时,Windows和32位客户端支持并不重要。

我在OS上做了一些测试,开发工具附带的最新GCC不支持C+11模式(因此似乎不能保证long long的可用性)。Clang也不支持这一点,尽管在某个版本之后,如果启用了long long模式,则支持C99模式。

当可移植性是一个重要的目标时,是否建议使用int64_t来代替long long?使用格式说明符似乎很痛苦。

我能否可靠地将int64_t转换为long long (以及与uint64_t等效的unsigned ),以便将其与以long long作为参数的现有函数和库一起使用?(当然,又回来了。)

在这种心态下,如果我发布的代码需要Clang功能,而不是GCC,那么Clang是否会取代GCC成为Linux上的首选编译器?在大多数情况下,当向最终用户提供源代码时,这个编译器是否是我所期望的呢?

基本上,我想征求其他开发人员的一些建议,他们使用了两种类型的便携C和C++代码,考虑到上面的目标,他们可能会对更好的长期方法提出一些建议。

EN

Stack Overflow用户

回答已采纳

发布于 2012-09-17 23:15:11

long longunsigned long long类型是标准C类型和标准C++类型,每种类型都至少有64位。我所知道的所有编译器都提供了这些类型,除非是在-pedantic模式下,但在这种情况下,int64_tuint64_t也不能在预C++ 2011编译器中使用。在所有的系统中,<stdint.h>也是可用的。也就是说,据我所知,你怎么拼写这个类型并不重要。<stdint.h>的主要目标是为特定数量的比特提供最佳匹配。如果您至少需要64位,但也希望利用这种类型的快速实现,您可以使用来自int_least64_tuint_least64_t<stdint.h><cstdint> (在后者的情况下,名称是在名称空间std中定义的)。

票数 34
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12468281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档