はじめまして、テラといいます。早速ですが本題を。
ヘッダファイル内で extern int a[2][2]; と宣言したあとで、
ソースファイル内で a[2][2] = { {1,0},{0,1} }; のように初期値を入力したところ、
最初の { で「式が必要です」というエラーが出てしまいます。
自分としては、これを使用してマップ上で進行の可否のデータを一箇所のソースファイルにまとめたいと思っています。
そのため、上記のエラーが直ればマップ作成に移動できると思いますので、どなたかご教授願います・・・!
extern宣言を使用したときの二次元配列
Re:extern宣言を使用したときの二次元配列
> ソースファイル内で a[2][2] = { {1,0},{0,1} }; のように初期値を入力したところ、
その行の前後何行かを含めて、実際に書いたソースコードを示してください。

その行の前後何行かを含めて、実際に書いたソースコードを示してください。

Re:extern宣言を使用したときの二次元配列
>シエルさん
回答ありがとうございます。
マップ作成のソースの中で変数宣言してみます。
>BOXさん
以下がそのソースコードです。
#include "global.h"
void first_initialize(){
player.x = 320;
player.y = 160;
player.type = 0;
player.move = 0;
map_isMove[2][2] = {1,0},{0,1} };
}
global.h 内で map_isMove[2][2] が int型で extern宣言されています。
また、その上の構造体に関しては、同様に global.h 内で構造体を宣言しているヘッダファイルをインクルードしています。

回答ありがとうございます。
マップ作成のソースの中で変数宣言してみます。
>BOXさん
以下がそのソースコードです。
#include "global.h"
void first_initialize(){
player.x = 320;
player.y = 160;
player.type = 0;
player.move = 0;
map_isMove[2][2] = {1,0},{0,1} };
}
global.h 内で map_isMove[2][2] が int型で extern宣言されています。
また、その上の構造体に関しては、同様に global.h 内で構造体を宣言しているヘッダファイルをインクルードしています。

Re:extern宣言を使用したときの二次元配列
[/url]が配列としての意味を持つのは宣言の時のみです。
式中に現れた場合は添え字演算子となりポインタ演算のシンタックスシュガーに過ぎません。
したがって、map_isMove[2][2] = {1,0},{0,1} }; というコードは
*(*(map_isMove+ 2) + 2) = {1,0},{0,1} }; というコードと全くの等価です。
*(*(map_isMove+ 2) + 2)の型は
>extern int a[2][2]; と宣言したあとで
ということですから、int 型です。 配列型ではありません。
map_isMove[0][0] = 1;
map_isMove[0][1] = 0;
という風に個別に初期化する必要があります。
もしくは
static const int Hoge[2][2] = {{1,0},{0,1}};
とでもしておいて、
memcpy() あたりで一括にコピーしてしまうかですね。
式中に現れた場合は添え字演算子となりポインタ演算のシンタックスシュガーに過ぎません。
したがって、map_isMove[2][2] = {1,0},{0,1} }; というコードは
*(*(map_isMove+ 2) + 2) = {1,0},{0,1} }; というコードと全くの等価です。
*(*(map_isMove+ 2) + 2)の型は
>extern int a[2][2]; と宣言したあとで
ということですから、int 型です。 配列型ではありません。
map_isMove[0][0] = 1;
map_isMove[0][1] = 0;
という風に個別に初期化する必要があります。
もしくは
static const int Hoge[2][2] = {{1,0},{0,1}};
とでもしておいて、
memcpy() あたりで一括にコピーしてしまうかですね。
Re:extern宣言を使用したときの二次元配列
>へろりさん
回答ありがとうございます。
extern宣言したあとでは、配列型にはならないということですね・・・。
もうちょっと工夫して、マップ作成しやすい方法を考えてみます。
回答ありがとうございます。
extern宣言したあとでは、配列型にはならないということですね・・・。
もうちょっと工夫して、マップ作成しやすい方法を考えてみます。
