char B[200];
靜態庫
。它被稱爲
extern char B[]; // (1)
在包含在客戶端代碼中的頭文件中。 一旦我需要使用sizeof(B)
編譯器抱怨並改變
extern char B[200]; // (2)
平靜下來的編譯器。
庫和客戶端代碼是C++,但它使用C鏈接(頭的外部聲明由
extern "C" { ... }
周圍是否有任何潛在的問題,如果我使用(2),而不是(1)?
PS我把200爲簡單起見它是在頭文件中定義的恆定隨附庫
庫頭:。
#define MAXLEN 200
實際上,即使它不是一個庫,但在一個單獨的文件(編譯單元)中,問題是相似的。
有什麼辦法可以(1)在這個大的舊代碼中使用,我可以通過使用(2)來破解?
的確沒有想到這件事,圖書館應該定義常量'爲size_t BSIZE =的sizeof(B);`和`的extern常量爲size_t BSIZE;在`它的頭部,或者可能使用函數來返回大小(函數方法更適合於共享庫和位置無關的代碼)。 – 2011-01-20 20:22:47