extern int grid[];
のは、あなたがこのようないくつかのコードを持っていたとしましょう:
:あなたは、たとえば、2つの異なるファイル、たとえば、あなたは以下を持っている可能性の中にこれを分離したい場合
int grid[] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 2 , 3 , 2 , 3 , 2 , 3 , 1 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ,
1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 ,
1 , 0 , 1 , 0 , 0 , 0 , 0 , 1 ,
1 , 0 , 0 , 0 , 0 , 0 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 };
int arr_sum(int* arr, int len)
{
int sum = 0;
for (int i = 0; i < len; i++) {
sum += arr[i];
}
return sum;
}
int main(int argc, char** argv)
{
printf("%d\n", arr_sum(grid, sizeof(grid)/sizeof(int)));
return 0;
}
main.cので
int grid[] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
1 , 2 , 3 , 2 , 3 , 2 , 3 , 1 ,
1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ,
1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 ,
1 , 0 , 1 , 0 , 0 , 0 , 0 , 1 ,
1 , 0 , 0 , 0 , 0 , 0 , 1 , 1 ,
1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 };
:
grid.cで0
extern grid[];
int arr_sum(int* arr, int len)
{
int sum = 0;
for (int i = 0; i < len; i++) {
sum += arr[i];
}
return sum;
}
int main(int argc, char** argv)
{
printf("%d\n", arr_sum(grid, sizeof(grid)/sizeof(int)));
return 0;
}
どのように私は、実装ファイルで配列を作成しますか? –
それ以外の場所には構築する必要はありません。上記のコードをmain.cに置き、グリッドを使用する他のソースファイルで使用される共通のヘッダーファイルに "extern int grid []"を入れます。ヘッダーが不要な場合は、グリッドが使用されている場所にexternを配置してください。 – Parappa
コンパイルされますが、別の関数から配列にアクセスしようとすると、コンパイラはエラーをスローします:/ –