C 在头文件中找不到结构

C 在头文件中找不到结构,c,struct,header,C,Struct,Header,我一直在研究Jon Erikson书中的一些程序,我的头文件中的结构有一些问题。我在“myheader测试”中声明了一些用于数据包头存储的结构,但是当我尝试将它们实现到程序中时,gcc告诉我这些结构是未声明的。 我知道头文件正在被读取,因为其中声明的其他函数在其他程序中工作。另外,当我试图在main()程序中定义结构时,它告诉我它们已经在头中声明了 来自myheader测试。h: #define ETH_ADDR_LEN 6 #define ETH_HDR_LEN 14 struct

我一直在研究Jon Erikson书中的一些程序,我的头文件中的结构有一些问题。我在“myheader测试”中声明了一些用于数据包头存储的结构,但是当我尝试将它们实现到程序中时,gcc告诉我这些结构是未声明的。 我知道头文件正在被读取,因为其中声明的其他函数在其他程序中工作。另外,当我试图在main()程序中定义结构时,它告诉我它们已经在头中声明了

来自myheader测试。h:

#define ETH_ADDR_LEN 6  
#define ETH_HDR_LEN 14  

struct ether_hdr 
{
  unsigned char ether_dest_addr[ETH_ADDR_LEN];  
  unsigned char ether_source_addr[ETH_ADDR_LEN];
  unsigned short ether_type;
};
在main()中

来自解码函数()

和gcc:

    decode_sniff.c: In function ‘decode_ethernet’:
decode_sniff.c:94:29: error: ‘ether_hdr’ undeclared (first use in this function)
   printf("[Source : %02x]", ether_hdr->ether_src_addr[0]);
我认为问题在于我在程序函数中声明了struct,但我已经看过类似的例子,看不出有什么不同。我还尝试将对结构的第一个引用移动到main中,但遇到了相同的问题。非常感谢您的帮助。

谢谢

ether_hdr->ether_src_addr[0]
而不是

ethernet_header->ether_source[0] 
// or src_addr? dunno why it was different from the declaration before.

对于eth_src_addr和eth_source之间的差异,我深表歉意-我不知道为什么我是从结构名而不是刚才声明的名称调用的,因为我一直在努力寻找问题的原因,非常感谢您的帮助。再次感谢。
ether_hdr->ether_src_addr[0]
ethernet_header->ether_source[0] 
// or src_addr? dunno why it was different from the declaration before.