我有一个文件,其中有一个全局数组
static char name[6];
和一个函数
static char* gen_name(char* dest, const size_t len) {
for (int i = 0; i < len - 1; ++i)
dest[i] = 'A' + (genrand_uint32() % ('Z' - 'A'));
dest[len - 1] = '\0';
return dest;
}
然后将指向名称的指针存储在不同头文件中的全局变量中,该变量不是静态的。
this_name = gen_name(name, sizeof name);
当另一个文件中的函数使用这个指针时,它在 Linux 上运行良好,但是当我在微控制器上运行相同的代码时,它会打印垃圾。当我删除static
关键字时,它工作正常。
为什么会这样?
我应该什么时候使用static
?我想我应该将所有未在文件外使用的变量和函数声明为static
,这是错误的吗?