問題タブ [unions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
3984 参照

c++ - sem_t union/struct C++ 継承

古い C++ プロジェクトを Linux (RHEL 5.3) に移植しています。

状況は次のとおりです

glibc-2.3.3.20040420 まで sem_t が構造体だったため、これは機能していました。現在、新しいバージョンの glib では、共用体 => 継承は許可されていません。したがって、コンパイルは機能しません。

いかがでしたか:

それはどうですか:

これを修正する最善の方法は何でしょうか?sem_t の機能を「ラップ」するにはどうすればよいですか?

どうもありがとう!

======後で編集====================================

OldClass は「後で」他のクラスによって使用されます (プロジェクトは非常に大きい) : したがって、同じインターフェイスを維持する方法を探しているので、OldClass へのすべての呼び出しを書き直すのを避けることができます。

sem_t;OldClass をラップするクラス MySem_t を作成して MySem_t を継承する方法があるかどうかを考えていました...これは実現可能ですか?

ありがとうございました。

0 投票する
6 に答える
1358 参照

c - Cの共用体に存在するchar型フィールドにuint64_tデータ型を格納する

こんにちは、より大きな構造体の一部である次のユニオンがあり、このユニオンに uint64_t (64 ビット サイズ) データを格納したいと考えています。ただし、他のフィールドは完全な uint64_t に対して十分な大きさではないため、id_data フィールドにアクセスして保存したいと考えています。しかし、uint64_t データをこの id_data フィールドに割り当てる方法がわかりません。

このフィールドから uint64_t データを読み取る方法は知っていますが、値を割り当てる方法がわかりません。

どんな助けでも大歓迎です。

ありがとう。

0 投票する
7 に答える
38898 参照

c - c99 にない構造体内の匿名共用体?

ここに私が持っている問題の非常に単純化されたコードがあります:

そして、私が理解していないのはこれです:

GCCオプションなしで使用する-stdと、上記のコードは問題なくコンパイルされます (同様のコードはかなりうまく機能します) が、c99 この手法は許可されていないようです。なぜそうであり、c99(またはc89c90)互換にすることは可能ですか?ありがとう。

0 投票する
2 に答える
1041 参照

c++ - IP アドレスの複数の解釈に共用体を使用していますか?

職場では、IP アドレスを 4 バイトの配列または 32 ビット整数として解釈できるようにする次の構造があります。

これは問題なく動作しますが、本のC++ コーディング標準の第97章「表現を再解釈するために共用体を使用しないでください」を読んだ後、少し心配です。ただし、本の例はより陰湿であり、それが私のコードに当てはまるかどうかはわかりません。

コードに潜在的な問題はありますか?

0 投票する
3 に答える
33583 参照

c - 構造体内の共用体で変数にアクセスする

構造体のユニオン内のネストされた構造体要素にアクセスする最初の方法が機能し、2番目の方法が機能しない理由を誰でも説明できますか?

0 投票する
4 に答える
877 参照

c++ - C++「選択」ユニオン

これに用語があるかどうかはわかりませんが、「選択」が機能しているようです。私は C++ で作業しており、作成する必要がある共用体がたくさんあります。共用体は、共用体のメンバーの 1 つの選択を表します。現在の「選択」は追跡され、常に利用可能です。私は現在、これらの「ユニオン」を手動でコーディングしていますが、この種のことを (半) 自動的に行うための巧妙なトリックがあるかどうか疑問に思っています。

これを実装しようとする最初の試合で、代入演算子のオーバーロード、自明でないコンストラクター、またはコピー コンストラクターがないというユニオンの制限に遭遇しましたが、現在の「選択」を実際に追跡しているため、非常に定義された動作があることに気付きました。ほぼすべての状況下で使用できます。

これが私が現在行っていることです (2 つの選択肢のみで、最大 10 または 15 になる可能性があります)。これはかなりの量のコードであり、そのほとんどすべてがボイラープレートです。また、私が以下に持っているものが有効であるかどうかについてコメントがあれば、それは素晴らしいことですが、それでもC ++の狂気の一部を拾っています...

助けてくれてありがとう

0 投票する
2 に答える
1052 参照

c - 揮発性メンバーと不揮発性メンバーの両方を持つ結合のセマンティクスは何ですか?

より具体的には、私は以下を(簡略化して)持っています:

sizeof(int)の最初の項目にアクセスしたことがない場合、期待どおりに機能dataすることに頼ることはできbitsますか?

0 投票する
3 に答える
1259 参照

sql - ユニオンを使用せずにSQLステートメントを作成するにはどうすればよいですか?

私は以下のようなSQLステートメントを持っています。unionキーワードを使用せずに、このsqlステートメントの結果に単一の行(コード= 0、desc = 1)を追加するにはどうすればよいですか?ありがとう。

0 投票する
11 に答える
8539 参照

c - struct を使用して同じことができる場合に共用体を使用する利点 - C

Cでの使用を理解するのが困難unionです。この件について SO に関する多くの投稿を読みました。unionしかし、構造体を使用して同じことが達成できる場合に、なぜ好ましいのかについては説明していません。

K&Rより引用

コンパイラのシンボル テーブル マネージャーに見られるような例として、定数が int、float、または文字ポインターであるとします。特定の定数の値は、適切な型の変数に格納する必要がありますが、値が同じ量のストレージを占有し、その型に関係なく同じ場所に格納される場合、テーブル管理に最も便利です。これが、複数の型のいずれかを正当に保持できる単一の変数を結合する目的です。構文は構造に基づいています。

使用法は

構造体を使用して同じことを実装できます。何かのようなもの、

これは同じではありませんか?どのような利点unionがありますか?

何かご意見は?

0 投票する
3 に答える
3031 参照

c - C の構造体と共用体、サイズの決定とメンバーへのアクセス

全て、

これは、私が混乱しているユニオンの例です。

charそれが1バイト、int2バイト、 4バイトであることを考慮してくださいlong。ここの構造体全体のサイズは? ユニオンのサイズは {char* のサイズ}+ {double のサイズ} になりますか? ユニオンでラップされた構造体のために混乱しています。

また、構造体の変数にアクセスするにはどうすればよいですかdvar.d?