【问题标题】:How to force long to be 4 byte如何强制 long 为 4 字节
【发布时间】:2015-02-24 09:09:39
【问题描述】:

我有问题。当我编译我的项目时,我有sizof(long int) = 8sizof(int) = 4。但是,我也需要 sizeof(long int) 为 4。有没有办法做到这一点? 问题是我有很多巨大的 int 数组,需要将它们分配给 long int 数组。如果我强制转换所有数组(特别是强制转换数组的每个条目),这将导致很多时间。

【问题讨论】:

  • long int中删除所有long,或者用int32_t替换/重新定义long int
  • 你试过了吗,还是你只认为它会很慢?速度几乎肯定受内存带宽限制。

标签: c++ arrays int long-integer sizeof


【解决方案1】:

在 LP64 平台(或陌生平台,就此而言),您不能强制内置 long int 类型为 4 字节长。

但是,您可以使用<stdint.h> 中的类型来保证变量的确切大小。

在您的情况下,您需要 int32_tuint32_t 作为您的类型,具体取决于您是否需要/想要符号位。

【讨论】:

    【解决方案2】:

    您可以告诉编译器您的目标平台,或者使用编译器特定的命令告诉编译器变量的大小。

    另一种方法是使用宏并根据您的平台定义它:

    #if PLATFORM_USES_8_BYTE_LONG
    #define MY_LONG_INT int32_t
    #else
    #define MY_LONG_INT long int
    #endif
    

    首选方法是为目标架构设置编译器。许多编译器都有大量预定义架构可供选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 2015-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多