【发布时间】:2020-04-03 13:51:25
【问题描述】:
我有两个.c 文件,例如mylib.c 和main.c 和一个头文件mylib.h。主要思想是制作全局静态数组,我可以从main.c 定义它的大小,但它可以从mylib.c 访问,而不能在main.c 访问。我目前拥有的代码:
mylib.c:
#define _MYLIB_C_
#include "mylib.h"
extern char my_array[];
void test()
{
// Doing something with my_array...
}
main.c:
#define MY_ARRAY_SIZE 128
#include "mylib.h"
void main()
{
test();
}
mylib.h:
#ifndef _MYLIB_H_
#define _MYLIB_H_
void test();
#ifndef _MYLIB_C_
char my_array[MY_ARRAY_SIZE];
#endif /* _MYLIB_C_ */
#endif /* _MYLIB_H_ */
所以,问题是:“我可以限制my_array 的范围以使其在main.c 中不可见吗?”
【问题讨论】:
-
我不知道你的情况是什么,但是有一个动态分配数组的函数不是更好,这样就不需要从
main.c访问数组了吗? -
将您的数组移动到仅包含在 main.c 中的标头。
-
也许我应该提到这一点,但我不能使用动态内存分配。
-
无论如何,如果这是您的代码,请不要使用该变量。如果它打算放在图书馆之类的地方,请在名称前加下划线,不要记录它的存在。
-
“全局静态数组”就像是在说“方圆”。