我有一个名为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 - 包含捕获数据包的时间的struct timeval
...
如何访问ts
?感谢。
对于顽固的C开发人员,方括号在Objective-C中使用,是C的超集。你可以忽略它,在这种情况下它们是初始化器。
答案 0 :(得分:3)
由于您是指向结构的指针,请使用->
运算符而不是.
:
header->ts
答案 1 :(得分:2)
header
是一个指针。您可以像header->ts
答案 2 :(得分:1)
由于header
是指向pcap_pkthdr
实例的指针,因此需要使用->
取消引用,如下所示:
header->ts