2013-11-23 103 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