我在做一個使用Microchip C18編譯器的項目。我有一個叫做塊的結構,指向其他塊(東北西南)。這些塊將使我成爲一張地圖。 然後我有一個指針,我用來評估一切。ROM變量指針指向RAM變量?
只是使用RAM,它看起來像:
struct block{
struct block *north;
struct block *east;
struct block *south;
struct block *west;
};
struct block map[5] =
{ // just a simple line.
{ NULL, &map[1], NULL, NULL },
{ NULL, &map[2], NULL, &map[0]},
{ NULL, &map[3], NULL, &map[2]},
{ NULL, &map[4], NULL, &map[3]},
{ NULL, NULL, NULL, &map[4]}
};
struct block* position = &map[0];
這讓我做的東西,如:
void goWest()
{
if(position -> west != NULL) position = position -> west;
}
問題是,我已經在我的項目運行的RAM和需要使用ROM 我至今是:
struct block{
rom struct block *north;
rom struct block *east;
rom struct block *south;
rom struct block *west;
};
rom struct block map[5] =
{ // just a simple line.
{ NULL, &map[1], NULL, NULL },
{ NULL, &map[2], NULL, &map[0]},
{ NULL, &map[3], NULL, &map[2]},
{ NULL, &map[4], NULL, &map[3]},
{ NULL, NULL, NULL, &map[4]}
};
我做了一些調試,能告訴ABO部分作品,但試圖讓位置指針讓我感到悲傷。 所以我想我的問題是:
我該如何容納一個指針,我可以編輯的值的ROM變量地址?
當我嘗試:
struct block *position = &map[0];
我得到「在分配警告[2066]類型限定符不匹配」我認識到,一個ROM變量,RAM變量是兩回事, 但我有不知道該怎麼做。
嗨Cal普拉特,並歡迎。我對文字做了一些小修改,你可能想看看。 –
謝謝,貓頭鷹! –