2

通信プロトコル (USB デバイス記述子) で使用される配列があります。このプロトコルは、配列ヘッダーで配列サイズを呼び出します。だから私はそれをしたいと思います(これは禁止されています):

static uint8_t array[]= {
    TYPE,
    sizeof(array),
    other data...
};

配列はメモリの読み取り専用部分にあり、関連するセルを後でオーバーライドすることはできません。セルをオーバーライドするためにコピーするつもりはありません(最小限の組み込みシステムにあります)。DMA を通過するため、「オンザワイヤ」のように見える必要があります。

この制限を回避できる魔法はありますか? C99 または GNU 拡張機能を使用したいと考えています。そのためだけに切り替えるつもりはありませんが、C++ ソリューションにも興味があります。

4

1 に答える 1

3

配列ではなく、本当に必要な構造体を使用する場合は、次のことが可能です。

typedef struct
{       int     type, size, other;
} pack_t;
static pack_t a =
{       10, sizeof(a), 11
};
于 2013-04-29T19:47:59.750 に答える