2013-11-22 74 views

回答

1

它是extern聲明。它只是聲明,而不是定義。

這意味着pkt_data將在一些其他文件或一些其他正在鏈接的模塊中定義。

因此,請參閱pkt_data的定義以查看其大小。

+0

她得到'pkt_data'的siez的主要問題不是它被'decalred'extern,而是它的聲明是**不完整**。不可能確定這種類型的大小。 – alk

0

你還沒有聲明大小,extern相當於你將定義pkt_data []一些地方,但只有一次。你無法從extern聲明中獲得大小。

+0

完全可以獲得一些'extern'聲明變量的大小。這不是'extern'聲明,因此無法確定此問題中聲明的變量的大小。這是由於'[]'聲明是**不完整**。 – alk

2

該聲明所說的是,有一個名爲pkt_data的數組。大小沒有在那裏指定,除非你是寫這行的人,否則它的細節應該留給實際定義它的代碼(即:爲它保留空間)。

0

這個聲明

extern unsigned char pkt_data[]; 

以及這一個

unsigned char pkt_data[]; 

不全

不可能確定不完整類型的大小。


我怎麼知道pkt_data聲明?

你知道嗎。

extern unsigned char pkt_data[]; 

是聲明。

這裏缺少的是定義

要回答這個問題:在可用的來源中搜索它。您無權訪問定義pkt_data沒有機會確定pkt_data的大小。

我們所知道的是,pkt_data的地址會有一個指針的圓圈。以下聲明將完全有效,順便說一句:

size_t s = sizeof(&pkt_data);