我在哪里定义C中的常量数组?
我正在写一些C,我有一个int的查找表。我有点生疏了。。。在哪里声明和初始化数组,以便在多个C文件中使用它?我可以在H文件中声明它并在C文件中初始化它吗?如果我理解正确,是的,你可以这样做。读一些关于我在哪里定义C中的常量数组?,c,arrays,initialization,C,Arrays,Initialization,我正在写一些C,我有一个int的查找表。我有点生疏了。。。在哪里声明和初始化数组,以便在多个C文件中使用它?我可以在H文件中声明它并在C文件中初始化它吗?如果我理解正确,是的,你可以这样做。读一些关于 extern static 关键词。如果我理解正确,是的,你能做到。读一些关于 extern static 关键字。您可以使用extern在头文件中声明它,并在一个源文件中定义它。但是,根据定义,它不能是静态的您可以使用extern在头文件中声明它,并在一个源文件中定义它。但是,根据定义,它不
extern static
关键词。如果我理解正确,是的,你能做到。读一些关于
extern static
关键字。您可以使用
extern
在头文件中声明它,并在一个源文件中定义它。但是,根据定义,它不能是静态的您可以使用extern
在头文件中声明它,并在一个源文件中定义它。但是,根据定义,它不能是静态的,全局变量应该在.h文件中声明,并声明为extern
,然后在.c文件中定义。请参阅comp.lang.c常见问题解答
对于阵列,可能需要格外小心。参见comp.lang.c常见问题解答。全局变量应在.h文件中声明,并应声明为extern
,然后应在.c文件中定义。请参阅comp.lang.c常见问题解答
对于阵列,可能需要格外小心。参见comp.lang.c常见问题解答。在一个c文件中定义数组,并在另一个c文件中将其声明为extern
一个常见的错误是将数组等同于指针,并执行以下操作:
// file1.c:
int array[] = { 1,2,3,4};
// file1.h:
extern int *array;
// file2.c:
#include "file1.h"
// use array
// file1.h:
extern int array[];
这是行不通的。在某些情况下,可以将数组的名称视为指针,但这不是其中之一。[编辑:正确的做法是:
// file1.c:
int array[] = { 1,2,3,4};
// file1.h:
extern int *array;
// file2.c:
#include "file1.h"
// use array
// file1.h:
extern int array[];
在一个C文件中定义数组,并在另一个C文件中将其声明为extern
一个常见的错误是将数组等同于指针,并执行以下操作:
// file1.c:
int array[] = { 1,2,3,4};
// file1.h:
extern int *array;
// file2.c:
#include "file1.h"
// use array
// file1.h:
extern int array[];
这将不起作用。在某些情况下,可以将数组的名称视为指针,但这不是其中之一。[编辑:正确的做法是:
// file1.c:
int array[] = { 1,2,3,4};
// file1.h:
extern int *array;
// file2.c:
#include "file1.h"
// use array
// file1.h:
extern int array[];
这个问题值得继续还是应该删除?这个问题值得继续还是应该删除?谢谢,这是我需要的提示。我认为OP的意思是“静态”在某种程度上,这与C语言中的关键字static
的含义没有很好的关联:)。我已经发布了这两个词,因为它们都是指C语言中变量的可见性-外部作用域指向其他文件或使其在文件中显示为静态。谢谢,这是我需要的提示。我认为OP的意思是“静态”在某种程度上,这与C语言中的关键字static
的含义没有很好的关联:)。我已经发布了这两个词,因为它们都是指C语言中变量的可见性-外部作用域指向其他文件,或者使其在文件中显示为静态。但是如果将extern int*数组;
更改为extern int数组[]
@R:好吧——既然你提到了它,我的答案可能不是很好,我的答案是要避免什么,而不是如何正确地做。“这么好”是一件主观的事情,但如果你不编辑,你就不会得到我的支持:)但是如果你把外部int*数组;
改为外部int数组[]
@R:好吧——既然你提到了,我的回答可能不是很好,因为我的回答谈到了应该避免什么,而不是如何正确地做。“很好”是一件主观的事情,但如果你不编辑,你就不会得到我的支持:)