Я проработал свой путь через некоторые программы из книги Джона Эриксона, и у меня возникли проблемы с структурами в моем заголовочном файле. Я объявил некоторые структуры для хранения заголовков пакетов в «myheader-test», но когда я пытаюсь реализовать их в программе, gcc сообщает мне, что структуры не объявлены. Я знаю, что файл заголовка читается, так как другие функции, заявленные в нем, работают в других программах с радостью. Также, когда я попытался определить программу int my main(), мне сказали, что они уже были объявлены в заголовке.Не удалось найти struct в заголовочном файле
из 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;
};
в главной()
#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]);
Я думаю, что проблема в моем объявлении о структурах в функции программы, но я был по сравнению с аналогичными примерами и не может увидеть разницу. Я также попытался перенести первую ссылку на структуры в основную и имел ту же проблему. Спасибо, спасибо.
извинения за разницы между eth_src_addr и eth_source - пережиток пытается ковыряться, чтобы найти причину проблемы, и благодаря очень для справки - я понятия не имею, почему я звонил из имени структуры вместо того, что я только что объявил. Еще раз спасибо. – Escarii