代码之家  ›  专栏  ›  技术社区  ›  Hamza Yerlikaya

gcc&clang-使用内部函数查找word中的第一个集合位

  •  0
  • Hamza Yerlikaya  · 技术社区  · 7 年前

    我想在机器字里找到第一个定位点。以下代码片段来自 bitset 在gcc中的实现,我将其修改为用于屏蔽要跳过的第一个x位。

      // mask off bits below bound
     __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__start_from);
     auto index = __builtin_ffs(__thisword);
    

    问题是如果两倍。

    • 谷歌一半的文档都说 __builtin_ffs 采取一个 unsigned int 但是另一半说 int . 我使用的gcc版本需要 int .

    • 如果我使用 int 作为 _WordT 这会导致在左移期间出现未定义的行为。如果我使用 无符号整型 作为类型,我得到一个符号更改错误,因为 _内置 期望一个 int .

    使用左移位和 int 获取正确的结果,但有警告。有什么办法可以解决这个问题?

    0 回复  |  直到 7 年前