簡體   English   中英

在sizeof命令的extern語句中指定char數組大小

[英]Specifying char array size in extern statement for sizeof command

char B[200];

在靜態庫中。 它被稱為

extern char B[];  // (1)

在客戶端代碼中包含的標頭中。 一旦我需要使用sizeof(B)編譯器抱怨並改為

extern char B[200]; // (2)

平穩的編譯器。

庫和客戶端代碼是c ++,但它使用C鏈接(頭部的extern聲明包圍

extern "C" { ... }

如果我使用(2)而不是(1),是否有任何潛在的問題?

PS我把200放在簡單。 它是庫附帶的頭文件中定義的常量。

庫頭:

#define MAXLEN 200

實際上,即使它不是一個庫,但在一個單獨的文件(編譯單元)中,問題也是類似的。

有沒有辦法(1)可以在這個大的舊代碼中使用,我可能會使用(2)打破?

如果庫實現改變了B的大小,那么你將會遇到不匹配問題,並且可能會出現各種錯誤。 庫編寫器應該提供一個描述數組大小的常量。 正如評論中所指出的那樣,庫編寫者可以通過按照sizeof(b)sizeof(b)編寫的常量或函數輕松地提供這一點,以使其對庫中的更改非常有彈性。

我遇到過同樣的問題。 這篇文章解釋了它。

http://c-faq.com/decl/extarraysize.html

很明顯,但我之前沒想過:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM