2013-11-23 3 views
1
내가 경로 추적의 핑 버전에 대한 IP 주소로 호스트 이름을 변환하는 데 문제가 있어요

(경로 추적의 -I)예상 식별자 토큰 '('

내가 내 포인터를 캐스팅 잘못 될 수있다 믿지, 내가 액세스를 시도하고있다 .를 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

기술적으로 괄호의 두 번째 세트는 필요하지 않습니다.'->'는 캐스트보다 우선합니다. – Kevin

+0

예. 나는 그들을 과용하는 경향이있다. 나는 그것에 대해 편집증적이고 나는 괄호의 누락 된 집합의 결과 인 일부 문제를 디버깅해야한다. – JustinDanielson

+0

또한이 예제에서 오류가 발생한 상황을 시각적으로 명확하게 보여줍니다. – Leigh