2012-01-06 3 views
1

공급 업체의 API를 사용하여 XML 부분을 검색하는 데 문제가 있습니다. 어떤 작품의 예를 들어 : getDestination (무효 * 메시지, 무효 * 대상 무효 * 크기)불투명 포인터를 통해 xml 데이터 가져 오기

vendordestinationtype_t dest; 
getDestination(msg_p, &dest, 16); 
printf("Received message. (Destination: %s).\n", dest.dest); 

는 생산 : 수신 메시지. (대상 : 일부 대상). Hoever 메시지의 XML 부분을 검색 할 수

그것은 getXmlPtr (무효 *의 MSG, 무효 ** xml_ptr, 무효 * xml_length)

char ptr[10000]; 
int size; 
getXmlPtr(msg_p, (void**)&ptr, &size); 
printf("Received message. (XML: %s).\n", ptr); 

그래서 질문입니다 함수, 내가 어떻게 선언 할을 필요로 XML 데이터 정보를 얻을 수있는 방법으로 ptr을 전달하면 (공급 업체의 설명서가 실제로 나쁘다) 주로 인수가 반환 할 메시지 XML 데이터 포인터로 채울 응용 프로그램 포인터에 대한 포인터 여야한다고 나와 있습니다. 프로그래머는 반환 된 void 포인터를 응용 프로그램에 적합한 참조로 캐스트 할 수 있습니다.

답변

0

음, void에 대한 포인터를 void에 대한 포인터로 선언합니다 (void *ptr;).

+0

그러면 printf 문을 통해 캐스트가 수행됩니다. 나는 그 전에 그렇게하려고 할 때 내가 잘못하고 있었던 것이 겠지요. 감사! – Buraan

+0

@Buraan 그건 정말 네가하고 싶은 일에 달려 있지만 네. 또한 호출에 캐스팅 할 수 있지만 호환 가능한 유형 (포인터에 대한 포인터 및 포인터에 대한 포인터는 두 가지가 필요함)이 필요합니다. –

0

void**은 포인터를 참조로 전달한다는 것을 의미합니다. 아마도이 함수는 XML 데이터가 저장된 곳을 가리 키도록이를 수정합니다. 따라서 배열이 아닌 포인터가 필요합니다.

void * ptr; 
int size; 
getXMLPtr(msg_p, &ptr, &size); 
+0

'char **'는 암시 적으로'void **'로 변환되지 않습니다. –

+0

너희는 그렇게 단순 해 보인다. 도움을 청하자. – Buraan

+0

@Let_Me_Be : 네 말이 맞아. 코드를 복사하는 동안 내 두뇌에 관여하는 것을 잊어 버렸습니다. –

관련 문제