2013-11-22 42 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);