I 4 "の#define" を有する:Cで3次元配列のアドレスを渡すにはどうすればよいですか?
#define MAX_NO_OF_ROUTES 15
#define MAX_STOPS_IN_ROUTE 50
#define RAIL_SYMBOL_LEN 3
#define READ_ADDR 25236
Iは、3次元配列は、次のように宣言した:
unsigned char ram_route_info[MAX_NO_OF_ROUTES][MAX_STOPS_IN_ROUTE][RAIL_SYMBOL_LEN];
次のように私はループ "のために" を有する:
for(i = 0 ; i < MAX_NO_OF_ROUTES ; ++i)
{
for(j = 0 ; j < MAX_STOPS_IN_ROUTE ; ++j)
{
// read from Flash into ram !!
HL_flash2ram(READ_ADDR, &ram_route_info[i][j][0]);
}
}
を
"HL_flash2ram"関数のプロトタイプは、
void HL_flash2ram(long addr, unsigned char*);
です。私はKEILコンパイラを使用してい
warning C182: pointer to different objects
:
はコンパイルの、しかし、私は警告を取得します。私も次のように試しました:
ram_route_info[i][j]
&(ram_route_info[i][j])
ram_route_info[i][j][0]
どうしたの?
これは私にとっては問題ありません。 '&ram_route_info [i] [j] [0]'は 'unsigned char *'型です。 2つの 'for'文が使用されている場所全体の関数を表示してください。 – ouah
それはコンパイラの問題かもしれませんか?おそらく2次元以上の配列を扱うことができないでしょうか? – dinchakpianist