gpt4 book ai didi

c++ - 是否有带 C++ 编译器但不带 64 位整数的平台?

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:41 25 4
gpt4 key购买 nike

我打算编写一个跨平台的 C++ 库。我只是想知道我是否必须允许缺少任何 64 位整数类型的平台。

我知道有带有 C 编译器的 8 位或 16 位嵌入式系统具有 32 位整数但缺少 64 位整数(例如 MSP430,至少在历史上是这样),但对于任何 C++ 编译器来说都是如此系统?

上下文:我实际上想移植一个 simple pseudo-random number generator我的 C 库到 C++。 C 库主要处理 32 位整数,但也有一些可选的 64 位 API。此外,32 位代码可以使用 64 位实现(非常简单)或仅使用 32 位实现(更复杂)来进行一些内部计算。 C header 具有 #ifdef UINT64_C 以启用/禁用 64 位 API。 C 文件具有 #ifdef UINT64_C 以在某些函数的 64 位或仅 32 位实现之间进行选择。那么,我是否必须对 C++ 库执行相同的操作,或者是否可以安全地假设 uint64_t 始终可用?

最佳答案

现阶段这是一个不完整的答案,但它是......

提升 C++ 库

我想知道 Boost C++ 库在 64 位方面做了什么,因为它们的目标是成为一组高质量的多平台库。翻了一下代码,无意中发现

  • BOOST_HAS_LONG_LONG
  • BOOST_HAS_INT64_T
  • BOOST_HAS_MS_INT64

这表明 Boost 库尝试为缺少 long long 和/或 uint64_t 并且可能具有 Microsoft 特定 __int64 的平台留出余地> 输入。

我想更详细地调查一下。最好找到解释所有这些的 Boost 文档。

C++11

C++11 定义了 long long as at least 64 bits . C99 已经这样做了。因此,任何以 C99 和/或 C++11 为目标的编译器都应该支持 64 位整数类型。参见 this other question一些背景。

关于c++ - 是否有带 C++ 编译器但不带 64 位整数的平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19393764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com