問題タブ [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.
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 を継承する方法があるかどうかを考えていました...これは実現可能ですか?
ありがとうございました。
c - Cの共用体に存在するchar型フィールドにuint64_tデータ型を格納する
こんにちは、より大きな構造体の一部である次のユニオンがあり、このユニオンに uint64_t (64 ビット サイズ) データを格納したいと考えています。ただし、他のフィールドは完全な uint64_t に対して十分な大きさではないため、id_data フィールドにアクセスして保存したいと考えています。しかし、uint64_t データをこの id_data フィールドに割り当てる方法がわかりません。
このフィールドから uint64_t データを読み取る方法は知っていますが、値を割り当てる方法がわかりません。
どんな助けでも大歓迎です。
ありがとう。
c - c99 にない構造体内の匿名共用体?
ここに私が持っている問題の非常に単純化されたコードがあります:
そして、私が理解していないのはこれです:
GCC
オプションなしで使用する-std
と、上記のコードは問題なくコンパイルされます (同様のコードはかなりうまく機能します) が、c99
この手法は許可されていないようです。なぜそうであり、c99
(またはc89
、c90
)互換にすることは可能ですか?ありがとう。
c++ - IP アドレスの複数の解釈に共用体を使用していますか?
職場では、IP アドレスを 4 バイトの配列または 32 ビット整数として解釈できるようにする次の構造があります。
これは問題なく動作しますが、本のC++ コーディング標準の第97章「表現を再解釈するために共用体を使用しないでください」を読んだ後、少し心配です。ただし、本の例はより陰湿であり、それが私のコードに当てはまるかどうかはわかりません。
コードに潜在的な問題はありますか?
c - 構造体内の共用体で変数にアクセスする
構造体のユニオン内のネストされた構造体要素にアクセスする最初の方法が機能し、2番目の方法が機能しない理由を誰でも説明できますか?
c++ - C++「選択」ユニオン
これに用語があるかどうかはわかりませんが、「選択」が機能しているようです。私は C++ で作業しており、作成する必要がある共用体がたくさんあります。共用体は、共用体のメンバーの 1 つの選択を表します。現在の「選択」は追跡され、常に利用可能です。私は現在、これらの「ユニオン」を手動でコーディングしていますが、この種のことを (半) 自動的に行うための巧妙なトリックがあるかどうか疑問に思っています。
これを実装しようとする最初の試合で、代入演算子のオーバーロード、自明でないコンストラクター、またはコピー コンストラクターがないというユニオンの制限に遭遇しましたが、現在の「選択」を実際に追跡しているため、非常に定義された動作があることに気付きました。ほぼすべての状況下で使用できます。
これが私が現在行っていることです (2 つの選択肢のみで、最大 10 または 15 になる可能性があります)。これはかなりの量のコードであり、そのほとんどすべてがボイラープレートです。また、私が以下に持っているものが有効であるかどうかについてコメントがあれば、それは素晴らしいことですが、それでもC ++の狂気の一部を拾っています...
助けてくれてありがとう
c - 揮発性メンバーと不揮発性メンバーの両方を持つ結合のセマンティクスは何ですか?
より具体的には、私は以下を(簡略化して)持っています:
sizeof(int)
の最初の項目にアクセスしたことがない場合、期待どおりに機能data
することに頼ることはできbits
ますか?
sql - ユニオンを使用せずにSQLステートメントを作成するにはどうすればよいですか?
私は以下のようなSQLステートメントを持っています。unionキーワードを使用せずに、このsqlステートメントの結果に単一の行(コード= 0、desc = 1)を追加するにはどうすればよいですか?ありがとう。
c - struct を使用して同じことができる場合に共用体を使用する利点 - C
Cでの使用を理解するのが困難union
です。この件について SO に関する多くの投稿を読みました。union
しかし、構造体を使用して同じことが達成できる場合に、なぜ好ましいのかについては説明していません。
K&Rより引用
コンパイラのシンボル テーブル マネージャーに見られるような例として、定数が int、float、または文字ポインターであるとします。特定の定数の値は、適切な型の変数に格納する必要がありますが、値が同じ量のストレージを占有し、その型に関係なく同じ場所に格納される場合、テーブル管理に最も便利です。これが、複数の型のいずれかを正当に保持できる単一の変数を結合する目的です。構文は構造に基づいています。
使用法は
構造体を使用して同じことを実装できます。何かのようなもの、
これは同じではありませんか?どのような利点union
がありますか?
何かご意見は?
c - C の構造体と共用体、サイズの決定とメンバーへのアクセス
全て、
これは、私が混乱しているユニオンの例です。
char
それが1バイト、int
2バイト、 4バイトであることを考慮してくださいlong
。ここの構造体全体のサイズは? ユニオンのサイズは {char* のサイズ}+ {double のサイズ} になりますか? ユニオンでラップされた構造体のために混乱しています。
また、構造体の変数にアクセスするにはどうすればよいですかd
。 var.d
?