extern int grid[];
Supongamos que tenía algo de código como esto:
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;
}
Si quería separar esto en dos archivos diferentes, por ejemplo, usted podría tener la siguiente, por ejemplo:
en grid.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 };
en main.c:
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;
}
¿cómo puedo construir la matriz en el archivo de implementación? –
No debería necesitar construirlo en ningún otro lado. Tenga el código que indicó anteriormente en main.c y coloque "extern int grid []" en un archivo de encabezado común utilizado por los otros archivos fuente que usan la cuadrícula. O si no desea el encabezado, simplemente coloque el extern donde se use la grilla. – Parappa
compila, pero si trato de acceder a la matriz desde una función diferente a la que estaba definida, el compilador arroja un error:/ –