2013-11-23 108 views
1

我有麻烦主机名转换为IP地址的traceroute的ping版本(路由跟踪-I)预期标识符令牌“(”

我beleive我可能是不正确的铸造我的指针,我试图访问。在SOCKADDR_IN结构的sin_port和in_addr结构的s_addr发生

struct addrinfo * addrptr 

...call getaddrinfo an start scanning results 

if(addrptr->ai_family == AF_INET 
     && addrptr->(struct sockaddr_in *)ai_addr->sin_port == 0 
     && addrptr->(struct in_addr *)ai_addr->s_addr == INADDR_ANY){ 

错误于:

   & addrptr->(struct sockaddr_in *)ai_addr->sin_port == 0 
         ^
+0

“期望的标识符标记”('“ - 什么是实际的错误信息? (问题是' - >'或'.'的右操作数必须是一个成员名称的标识符;它不是一个表达式。) –

+0

我现在不记得了,它与上面类似。我现在有新的问题,我相信这个问题已经解决了。 – Babbleshack

+0

如果您可以在标题或问题中显示实际的错误消息,您的问题将对未来的读者更有用。 –

回答

1
((struct sockaddr_in *)(addrptr->ai_addr))->sin_port 
((struct sockaddr_in *)(addrptr->ai_addr))->s_addr 
+1

从技术上讲,你不需要第二组parens - ' - >'比cast更优先。 – Kevin

+0

是的。我倾向于过度使用它们。我对此很偏执,我不愿意调试一些由于缺少括号而导致的问题。 – JustinDanielson

+0

它也使得它在视觉上明显地显示了这个例子中发生的错误。 – Leigh