【问题标题】:Bitwise OR for int64_t not defined?未定义 int64_t 的按位或?
【发布时间】:2013-03-30 00:30:13
【问题描述】:

这是我想要做的:

int64_t* h_out[ARRAY_SIZE];
int64_t result;
// some manipulations on h_out...
result = h_out[0] | h_out[1];

最后一行给出了这个错误:

error: expression must have integral or enum type

我不确定我是否理解错误的意思,但我猜它没有为int64_t 定义| 运算符。在谷歌上搜索这个错误时,出现了几个类似的问题,其中许多是因为% 运算符也没有为int64_t 定义。

那么...我如何对两个 64 位长整数进行比特运算?如果它需要特定于 GCC,我不关心可移植性,到目前为止它很简单。无论如何,这是一个玩具任务。

【问题讨论】:

  • 希望你不是 C 程序员...
  • 哦,酷 :) 我害怕了一会儿。

标签: c++ 64-bit bit-manipulation


【解决方案1】:

h_out[0] 是指向int64_t 的指针,而不是int64_t

【讨论】:

    【解决方案2】:

    它是为int64_t 定义的,但不是为int64_t*(一个指针)定义的。

    【讨论】:

      【解决方案3】:

      h_out 是指向int64_t 的指针数组,因此h_out[0]h_out[1] 的类型为int64_t *:不是整数类型,而是指针。也许你的意思是把它声明为

      int64_t h_out[ARRAY_SIZE];
      

      改为?

      【讨论】:

        【解决方案4】:

        你包括了吗

        #include <stdint.h>
        

        ?

        【讨论】:

        • 不,这不是问题所在。查看数组的声明。
        猜你喜欢
        • 2012-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多