Как получить член указателя на экземпляр структуры? - PullRequest
2 голосов
/ 06 декабря 2010

У меня есть функция обратного вызова got_packet:

void got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet) {
  WMShark *shark = (WMShark *)args;

  WMPacket *foundPacket = [[WMPacket alloc] init];
  foundPacket.packetNumber = [[shark capturedPackets] count];

  foundPacket.timeStamp = header.ts; // <-- PROBLEM IS HERE

  ...

  NSLog(@"%@: %s", shark, packet);
}

Я получаю ошибку компиляции error: request for member 'ts' in something not a structure or union в строке foundPacket.timeStamp = header.ts;.


В документации сказано:

...
const struct pcap_pkthdr указатель на структуру со следующими членами:

  • ts - структурное время, содержащее время, когда пакет был захвачен

...


Как получить доступ к ts?Спасибо.


Для стойких C-разработчиков квадратные скобки используются в Objective-C, расширенном наборе C. Вы можете игнорировать это, они инициализаторы в этом случае.

Ответы [ 3 ]

3 голосов
/ 06 декабря 2010

Поскольку у вас есть указатель на структуру, используйте оператор -> вместо .:

header->ts
2 голосов
/ 06 декабря 2010

header - указатель. Вы можете получить к нему доступ вот так header->ts

1 голос
/ 06 декабря 2010

Поскольку header является указателем на экземпляр pcap_pkthdr, его необходимо разыменовать с помощью ->, например, так:

header->ts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...