다른 함수에서 가변 인수 (...
) 또는 va_list
이 전달되는 함수가 있다고 가정합니다. 주요 논리는이 함수 자체에 있습니다 (f1
이라고 부름).하지만 다음 인수 유형을 결정하고 va_arg
을 사용하여 얻은 다음 다른 함수 (f2
이라고 부름)에 va_list
을 전달하고 올바르게 변환하고 호출자가 사용할 수 있도록 저장하십시오.va_list 또는 va_list에 대한 포인터를 전달 하시겠습니까?
va_list를 f2
으로 전달하는 것으로 충분하거나 va_list에 대한 포인터를 전달해야합니다. va_list가 배열 유형이어야하거나 객체 위치가 객체 자체가 아닌 포인터를 가리키는 위치에 저장되어 있지 않으면 호출 함수 (f1
)를 허용하는 값으로 전달하는 방법을 볼 수 없습니다. va_arg
에 의해 호출 된 함수의 변경 사항을 '확인'합니다.
누구든지이 문제에 관해 밝힐 수 있습니까? 나는 표준이 요구하는 것에 관심이 있으며, 어떤 특정한 구현이 허용하는 것이 아니다.
마지막 편집에 동의합니다 - 포인터가 갈 방법입니다 (OP는'va_list '에 대한 변경 사항을 호출 함수에서 확실히 볼 수 있기를 원하기 때문입니다). – caf
@caf : 다른 사람들이 내가했던 것처럼 똑같은 실수를하는 것처럼 보였고 기존의 프로토 타입을 질문자에게 제안하는 것처럼 보이기 때문에'vfprintf()'에 대한 내 참조를 편집해서는 안된다고 생각합니다. 그의 질문에 대답한다.) – JeremyP
나는 의견을 남기고/또는 투표를 끝내라고 말하고 싶습니다. 이전의 부정확 한 가정에 대해 정확한 대답을하는 것이 더 낫습니다. – caf