我在我的主文件中有这个代码:
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 };
如何在我的标题中定义它,以便我可以在整个班级中访问变量?
extern int grid[];
我们假设您有一些这样的代码:
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; }
如果你想将它分成两个不同的文件,比如说,你可以拥有以下内容,例如:
在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 };
在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; }
您无法在标题中定义它.您必须在标头中声明它并在source()文件中定义它.m
:
// In MyClass.h extern int grid[]; // In MyClass.m int grid[] = {...};