gpt4 book ai didi

c - 无法在头文件中找到结构体

转载 作者:行者123 更新时间:2023-11-30 19:39:42 27 4
gpt4 key购买 nike

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

来自 myheader-test.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() 中

#include "myheader-test.h"

来自解码函数()

void decode_ethernet(const unsigned char *header_start)
{

int i;
const struct ether_hdr *ethernet_header;

ethernet_header = (const struct ether_hdr *)header_start;
printf("[LAYER 2 : ETHERNET HEADER]\n");
printf("[Source : %02x]", ether_hdr->ether_src_addr[0]);

来自海湾合作委员会:

    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]);

我认为问题在于我在程序函数中声明结构,但我已经看过类似的示例,但看不出有什么区别。我还尝试将对结构的第一个引用移至 main 中,但遇到了同样的问题。任何帮助将不胜感激,谢谢。

最佳答案

你在做

ether_hdr->ether_src_addr[0]

而不是

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

关于c - 无法在头文件中找到结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36230917/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com