私が得ようとしているのは、バイナリ画像を格納する2次元配列のバイト配列を含む構造体です。構造体の2次元配列へのポインタを初期化する
typedef enum{
PIC_ID_DOUBLE_UP,
PIC_ID_DOUBLE_DOWN,
}PICPictureId_t;
typedef struct{
PICPictureId_t picId;
uint8 width;
uint8 height;
uint8 (**dataPointer);
}PICPicture_t;
サイズ(ピクセル単位)は、幅と高さによって決まります。今度は、一連の写真を初期化しようとしました。私はフラッシュ全体のデータを保存したい。
PICPicture_t pictures[] = {
{
.height = 3,
.width = 16,
.picId = PIC_ID_DOUBLE_UP,
.dataPointer = ???
}
};
データへのポインタをどのように初期化できますか?私は絵の構造体の配列へのポインタを使用して、doubleUp 2次元配列の最初の要素へのポインタを設定している場合、私は(A pointer to 2d arrayここで答えを学んだ後):コンパイルバージョンを取得
typedef struct{
PICPictureId_t picId;
uint8 width;
uint8 height;
uint8 (*dataPointer)[2];
}PICPicture_t;
uint8 doubleUp[3][2] = {
{0x12 ,0x13},
{0x22 ,0x32},
{0x22 ,0x32}
};
PICPicture_t pictures[] = {
{
.height = 3,
.width = 16,
.picId = PIC_ID_DOUBLE_UP,
.dataPointer = &(doubleUp[0]),
}
};
しかし、ここで私は2番目の配列の次元を宣言しなければなりませんが、構造体を次元の理想的なものにして、これにheightとwidthフィールドを使用したいと考えています。
他のメンバーと同じようにインラインで実際に初期化することはできません。 'malloc'を使って手作業で行と列を割り当てる必要があります。 –
多分私はそれをフラッシュに保存したいと付け加えなければならない。 – Semaphor
画像が組み込みシステムで使用されるNVM定数である場合、mallocは意味を成しません。 – Lundin