タグ付けされた質問 「memcmp」

6
C ++でジェネリック構造体を比較する方法は?
構造体を一般的な方法で比較したいのですが、次のようなことをしました(実際のソースを共有できないため、必要に応じて詳細を尋ねます)。 template<typename Data> bool structCmp(Data data1, Data data2) { void* dataStart1 = (std::uint8_t*)&data1; void* dataStart2 = (std::uint8_t*)&data2; return memcmp(dataStart1, dataStart2, sizeof(Data)) == 0; } 2つの構造体インスタンスに同じメンバーが含まれている場合(ただし、Eclipseデバッガーで確認しました)でもfalseを返す場合があることを除いて、これはほとんど意図どおりに機能します。いくつか検索した後memcmp、使用された構造体が埋め込まれているために失敗する可能性があることを発見しました。 パディングに無関心なメモリを比較するより適切な方法はありますか?使用する構造体を変更することはできません(使用しているAPIの一部です)。使用する多くの異なる構造体にはいくつかの異なるメンバーがあるため、一般的な方法で個別に比較することはできません(私の知る限り)。 編集:残念ながら、C ++ 11を使用しています。これは以前に言及したはずです...
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.