代码之家  ›  专栏  ›  技术社区  ›  Jingguo Yao

在C++中转换UTIN 64 T到空类型的目的是什么?

c++
  •  0
  • Jingguo Yao  · 技术社区  · 6 年前

    我看到下面的代码 RocksDB's source code :

    bool FullFilterBlockReader::KeyMayMatch(const Slice& key, uint64_t block_offset,
                                            const bool /*no_io*/,
                                            const Slice* const /*const_ikey_ptr*/) {
    #ifdef NDEBUG
      (void)block_offset;
    #endif
      assert(block_offset == kNotValid);
      if (!whole_key_filtering_) {
        return true;
      }
      return MayMatch(key);
    }
    

    (void)block_offset 是类型转换,其结果未使用。所以 (空)块偏移 用于其副作用。它的副作用是什么?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Alan Birtles    6 年前

    assert

    #define assert( expr )
    

    block_offset no_io const_ikey_ptr

    bool FullFilterBlockReader::KeyMayMatch(const Slice& key,
                                            uint64_t 
                                            #ifdef NDEBUG
                                              block_offset
                                            #endif
                                            ,
                                            const bool /*no_io*/,
                                            const Slice* const /*const_ikey_ptr*/) {
      assert(block_offset == kNotValid);
      if (!whole_key_filtering_) {
        return true;
      }
      return MayMatch(key);
    }
    

    #define UNUSED_PARAM( param ) (void)param
    
    void f( int a )
    {
        UNUSED_PARAM( a );
    }
    

    Q_UNUSED http://doc.qt.io/qt-5/qtglobal.html#Q_UNUSED

    ignore_unused https://www.boost.org/doc/libs/1_67_0/libs/core/doc/html/core/ignore_unused.html