問題タブ [struct]

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 投票する
16 に答える
91843 参照

c# - 可変構造体が「悪」なのはなぜですか?

SOに関するここでの議論に続いて、可変構造体は「悪」であるという発言をすでに数回読みました(この質問への回答のように)。

C#の可変性と構造体の実際の問題は何ですか?

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

c - C99 と ANSI-C の構造体の違いは何ですか?

このコードは ANSI-C では正しくないように見えますが、C99 では問題ありません。

C99 と ANSI-C の struct の違いは何ですか?

編集:「a」を忘れました、悪いです。このコードは、C99 モードの gcc で問題なくコンパイルされますが、すべての C99 拡張機能をサポートしていないことが知られている splint では解析エラーになります。

Edit2: これが splint の出力です:

Edit3: このファイルは eCos fileio.h (このフラグメントの最後の行は 152 行目) です。

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

c - cで構造体メンバーをバイト配列にコピーしようとしています

int、char、および char の配列が混在する構造体のメンバーをバイト配列にコピーして、シリアル回線に送信しようとしています。これまでのところ、

このコードを入手したので、それがどのように機能するかを完全には理解していません。memcpy が構造体の各要素を取得し、それを「i」変数によってインデックス付けされたシリアル ストリームにすることがわかりますが、USARTWrite 関数がこれをどのように文字列にパケット化するか、または配列を次のようにロードする方法はわかりません私の構造体の初期化。

申し訳ありませんが、この投稿は少し長くなりますが、私はこのプログラミングのひばりを始めたばかりで、この概念を理解しようとしています.

ありがとうデイブ

編集:

うわー、多くの良い答えがすぐに出ます - みんなありがとう。

slaz: それは私には論理的に思えます.私はまだポインタについて頭を悩ませていないので,そのアプローチについてはあまり考えていませんでしたが.見て。

  • このコード行はデータを UART に送信します。メッセージの内容を含む配列を何に置き換えますか? ここでは、構造の開始位置と大きさを示す変数があるが、送信する配列がないという論理的なステップが欠落しているようです

    /li>

ハーパー・シェルビー: その説明をありがとう。

rgds

デイブ

0 投票する
13 に答える
21975 参照

c++ - C++ メンバー変数のエイリアス?

私はそれが行われたのを見たことがあると確信しているので、これが可能であると確信しています。素晴らしいと思いますが、「これはひどいアイデアです。なぜなら____だから」というような回答を喜んで受け入れます。

基本的な構造体があるとします。

ここで、これらの変数にエイリアスを実装したいと思います。

理想的には、3 番目の構文は配列と見分けがつかないものです。つまり、arrデータを格納する float の配列を期待する関数 (たとえば、OpenGLglGet関数の多く) に参照パラメーターとして送信した場合、正常に動作します。

どう思いますか?可能?可能ですが、愚かですか?

0 投票する
9 に答える
226737 参照

javascript - Javascript の構造体

以前は、関連する変数を多数格納する必要がある場合、クラスを作成していました。

しかし、これが良い習慣であるかどうかは疑問です。JavaScript で構造体をシミュレートする他のより良い方法はありますか?

0 投票する
1 に答える
3587 参照

c# - C# でパックされた構造体のアンマネージド バッファーをマーシャリングする方法

次の pinvoke シグネチャを使用して、C# で Windows FilterSendMessage 関数を (正常に) 呼び出しています。

outBufferパラメーターには、C で次のように定義された任意の数の構造体 (次々にパック) が取り込まれます。

nameフィールドには、可変長のヌル終了 Unicode 文字列が割り当てられます。lenフィールドは、構造体の合計サイズ (名前文字列を含む) をバイト単位で示します。管理されていない側で構造体がどのように処理されているかについては、何も問題はないと確信しています。

c# で次のように定義されている BAH_RECORD 構造体のインスタンスに outBuffer をマーシャリングしようとすると、私の問題が発生します。

bah.name を印刷/表示/表示しようとすると、ゴミが表示されます...

outBuffer に実際に有効なデータが含まれていることを確認するために、C# で大雑把なポインター ハッカーを実行して、Marshal.ReadInt32 を 2 回呼び出し (最初の 2 つの構造体フィールドをカバーするため)、次に Marshal.ReadByte を数回呼び出してバイトを入力しました。 [] を Encoding.Unicode.GetString() の引数として使用します...文字列は正常に出力されるので、間違いなくそこにあるので、マーシャラーに正しく処理させることができないようです (できる?)

どんな助けでも大歓迎

スティーブ

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

c - C: 構造体定義内の構造体へのポインター

この構造体の定義で次の構造体へのポインターを取得するにはどうすればよいですか。

これは私が最初に書いた方法ですが、機能しません。

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

c++ - バイト配列を構造体に逆シリアル化する

文字/バイトの配列であるネットワーク経由の送信を取得します。ヘッダーといくつかのデータが含まれています。ヘッダーを構造体にマップしたいと思います。次に例を示します。

構造体に可変長フィールドが含まれていないと仮定すると、これは常に機能しますか? これを行うプラットフォームに依存しない/慣用的な方法はありますか?

ノート:

シリアル化/逆シリアル化を可能にするライブラリをインターネット上でかなり見てきましたが、以前に同じライブラリでシリアル化されている場合にのみ、何かを逆シリアル化できるという印象を受けました。ええと、私は送信の形式を制御できません。私は間違いなく、すべての値が互いに続くバイト/文字配列を取得するつもりです。

0 投票する
30 に答える
317000 参照

c# - C# でクラスではなく構造体を使用する必要があるのはいつですか?

C# でクラスではなく構造体を使用する必要があるのはいつですか? 私の概念モデルは、項目が単に値型のコレクションである場合に構造体が使用されるというものです。それらを論理的にまとめてまとまりのある全体にする方法。

ここでこれらのルールに出くわしました:

  • 構造体は単一の値を表す必要があります。
  • 構造体のメモリ フットプリントは 16 バイト未満である必要があります。
  • 作成後に構造体を変更しないでください。

これらの規則は機能しますか? 構造体は意味的に何を意味しますか?

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

c# - 構造体コンストラクターで自動プロパティ バッキング フィールドの値を設定するにはどうすればよいですか?

次のような構造体があるとします。

もちろん、The 'this' object cannot be used before all of its fields are assigned toというコンパイラ エラーが生成されます。

バッキング フィールドまたはプロパティ自体に値を割り当てる方法はありますか? または、独自の明示的なバッキング フィールドを使用して昔ながらの方法でプロパティを実装する必要がありますか?