問題タブ [packed]

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

c++ - パックされた構造体は移植可能ですか?

Cortex-M4 マイクロコントローラーにいくつかのコードがあり、バイナリ プロトコルを使用して PC と通信したいと考えています。packed現在、GCC 固有の属性を使用してパックされた構造体を使用しています。

大まかな概要は次のとおりです。

私の質問は:

  • MCU とクライアント アプリの構造体にまったく同じ定義を使用すると仮定するTelemetryPacketと、上記のコードは複数のプラットフォーム間で移植できますか? (私は x86 と x86_64 に興味があり、Windows、Linux、および OS X で実行する必要があります。)
  • 他のコンパイラは、同じメモリ レイアウトでパックされた構造体をサポートしていますか? どの構文で?

編集

  • はい、パックされた構造体が非標準であることは知っていますが、それらの使用を検討するのに十分便利なようです。
  • 私は C と C++ の両方に興味がありますが、GCC がそれらを異なる方法で処理するとは思いません。
  • これらの構造体は継承されず、何も継承しません。
  • これらの構造体には、固定サイズの整数フィールドと、他の同様のパックされた構造体のみが含まれます。(私は前にフロートでやけどをしたことがあります...)
0 投票する
0 に答える
264 参照

c++ - Doxygenで宣言順にソートされたパックされた構造体メンバーを保持する方法

私は doxygen を使用して、いくつかのパックされた構造体を使用して通信バッファーを表す C++ コードベースを文書化しています。私は通常、doxygen が使用するメンバーのアルファベット順が好きです。ドキュメント内で何かを見つけやすくするためです。ただし、パックされた構造体のドキュメントでは、宣言した順序でフィールドを表示することをお勧めします。その場合、宣言の順序が重要になるためです (とりわけ、CRC を表すフィールドなどの一部のフィールドのドキュメント)。 values は、同じ構造体の他のいくつかのフィールドを参照します)。

特定の構造体に対して個別にフィールドの順序を選択する方法はありますか、またはソートを制御する唯一の (グローバル) 方法はSORT_MEMBER_DOCSですか?