我在我有一個全球性陣列指向全局靜態變量的指針 - 不安全?
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
,這是錯誤的嗎?
顯示變量'name'填入的代碼。 – abelenky
'static char * gen_name(...)'不會做你認爲它的作用。 –
@RaymondChen如何? (注意:'for'頭後的第二行縮進令人困惑,但不影響編譯器看到它的方式。) –