我已经定义了以下静态常量数组:
const int arr[197] = { 55, -63, 12, -17, 121 , ... };
数组永远不会改变。它包含一些适用于我的程序的特定数字模式。 此数组用于三个不同的文件:
foo1()
中的{li> file1.c
foo2()
中的{li> file2.c
foo3()
中的{li> file3.c
每次将数组作为参数传递给函数。
因为此数组的定义很长且很广泛,所以我想创建一个单独的文件只是为了定义并保留该数组。
应如何正确完成?我应该在arr.h
中定义该数组,然后将#include <arr.h>
放入使用该数组的.c
文件中吗?
答案 0 :(得分:1)
const int arr[197] = ...
中 定义 arr.c
。
extern const int arr[197];
中 声明 arr.h
仅在arr.h
中将arr.c, file1.c, file2.c, file3.c
包含在#include "arr.h"
中,而不像@weno那样包含#include <arr.h>
答案 1 :(得分:1)
我无法评论已接受的答案(newb),因此这里有一些方法可以一次定义数组,但不能将其定义为全局变量:
arr.h
中定义数组,然后在foo1/2/3()
中,仅在功能实体内部#include "arr.h"
中定义数组。// arr.h
const int arr[197] = { 55, -63, 12, -17, 121 , ... };
// file1.c
void foo1()
{
#include "arr.h"
// Use arr like a local variable
}
arr
中定义arr.h
,但仅在main中包含。然后,将arr作为参数传递给foo1/2/3
int main()
{
#include "arr.h"
foo1(arr);
foo2(arr);
foo3(arr);
}
// arr_init.c
void init_arr(int arr[197])
{
const int src_arr[197] = {55, -63, 12, -17, 121 , ...};
memcpy(arr, src_arr, sizeof(src_arr));
}
// arr_init.h
extern void init_arr(int arr[197]);
// main.c
#include "init_arr.h"
int main()
{
int arr[197];
init_arr(arr);
foo1(arr);
foo2(arr);
foo3(arr);
}
// file1.c
void foo1(const int arr[197])
{
...
}
...