我有一个用 C 和 C++ 编写的开源代码库。我正在寻找一种保证至少64 位宽的整数类型,它可以在大多数 OS X(英特尔,64 位)和具有开源 C 和 C++ 编译器的 Linux 机器上可靠地编译,而无需太多最终用户的额外工作。Windows 和 32 位客户端支持此时并不重要。
我在 OS X 上做了一些测试,开发者工具附带的最新 GCC 不支持 C+11 模式(因此似乎不能保证long long
. Clang 也不支持这个,虽然它支持long long
如果 C99 模式启用,在某个版本之后。
当可移植性是一个重要目标时,一般建议使用int64_t
代替吗?long long
使用格式说明符似乎很痛苦。
我可以可靠地将一个int64_t
to long long
(同样与 with 的unsigned
等价物uint64_t
)一起使用以将它与long long
作为参数的现有函数和库一起使用吗?(当然,又回来了。)
在这种情况下,如果我发布的代码需要 Clang 功能而不是 GCC,那么 Clang 会取代 GCC 作为 Linux 上的首选编译器吗?在向最终用户提供源代码时,大多数情况下我可以期待那个编译器吗?
基本上,我想向其他将这两种类型用于可移植 C 和 C++ 代码的开发人员征求一些建议,考虑到上述目标,他们可能会对什么可能是更好的长期方式提出一些建议.