我正在爲之工作的公司具有針對嵌入式目標進行C開發的開發規則。一種是:頭文件中的內存分配
建議不要在頭文件中分配任何存儲空間。
我不確定它是什麼意思,寫它的人不在,其他開發人員也不在乎,所以我在這裏問。
我的理解是,我不應該在一個頭文件中聲明變量,所以這樣的事情會在.h氣餒:
int myVar;
static char myOtherVar;
我不明白的是什麼錯?爲什麼我不應該這樣做?
我正在爲之工作的公司具有針對嵌入式目標進行C開發的開發規則。一種是:頭文件中的內存分配
建議不要在頭文件中分配任何存儲空間。
我不確定它是什麼意思,寫它的人不在,其他開發人員也不在乎,所以我在這裏問。
我的理解是,我不應該在一個頭文件中聲明變量,所以這樣的事情會在.h氣餒:
int myVar;
static char myOtherVar;
我不明白的是什麼錯?爲什麼我不應該這樣做?
問題在於外部變量被雙重定義,而static
則爲包含頭部的每個模塊定義了浪費空間(除非它們被優化掉)。
您應該聲明在C文件中的變量,並在頭文件使用
extern int myVar;
,或者更好的是,寫一個訪問功能。
在頁眉中有static char myOtherVar;
是沒有意義的,因爲靜態意味着它只能在聲明它的文件中訪問。