問題タブ [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.
c++ - パックされた構造体は移植可能ですか?
Cortex-M4 マイクロコントローラーにいくつかのコードがあり、バイナリ プロトコルを使用して PC と通信したいと考えています。packed
現在、GCC 固有の属性を使用してパックされた構造体を使用しています。
大まかな概要は次のとおりです。
私の質問は:
- MCU とクライアント アプリの構造体にまったく同じ定義を使用すると仮定する
TelemetryPacket
と、上記のコードは複数のプラットフォーム間で移植できますか? (私は x86 と x86_64 に興味があり、Windows、Linux、および OS X で実行する必要があります。) - 他のコンパイラは、同じメモリ レイアウトでパックされた構造体をサポートしていますか? どの構文で?
編集:
- はい、パックされた構造体が非標準であることは知っていますが、それらの使用を検討するのに十分便利なようです。
- 私は C と C++ の両方に興味がありますが、GCC がそれらを異なる方法で処理するとは思いません。
- これらの構造体は継承されず、何も継承しません。
- これらの構造体には、固定サイズの整数フィールドと、他の同様のパックされた構造体のみが含まれます。(私は前にフロートでやけどをしたことがあります...)
c++ - Doxygenで宣言順にソートされたパックされた構造体メンバーを保持する方法
私は doxygen を使用して、いくつかのパックされた構造体を使用して通信バッファーを表す C++ コードベースを文書化しています。私は通常、doxygen が使用するメンバーのアルファベット順が好きです。ドキュメント内で何かを見つけやすくするためです。ただし、パックされた構造体のドキュメントでは、宣言した順序でフィールドを表示することをお勧めします。その場合、宣言の順序が重要になるためです (とりわけ、CRC を表すフィールドなどの一部のフィールドのドキュメント)。 values は、同じ構造体の他のいくつかのフィールドを参照します)。
特定の構造体に対して個別にフィールドの順序を選択する方法はありますか、またはソートを制御する唯一の (グローバル) 方法はSORT_MEMBER_DOCSですか?