가변 인수 목록이 있는 함수에 변수 인수 전달
가변 개수의 인수를 허용하는 함수로 작업할 때 다음을 호출해야 하는 경우가 많습니다. 그러한 기능 중 하나가 다른 기능입니다. 그러나 이미 다른 곳에서 사용 중인 경우 대상 함수를 수정하지 않고 한 함수에서 다른 함수로 인수를 직접 전달하는 것은 문제가 될 수 있습니다.
다음 예를 고려하세요.
void example(int a, int b, ...); void exampleB(int b, ...);
이 시나리오에서 예는 exampleB를 호출합니다. 그러나 질문이 생깁니다. 원래 구현을 수정하지 않고 어떻게 example의 가변 인수를 exampleB에 전달할 수 있습니까?
example에서 exampleB로 인수를 직접 전달하는 것은 불가능합니다. 대신 va_list를 사용하는 중간 함수를 만들어야 합니다.
#include <stdarg.h> static void exampleV(int b, va_list args); void exampleA(int a, int b, ...) // Renamed for consistency { va_list args; do_something(a); // Use argument a somehow va_start(args, b); exampleV(b, args); va_end(args); } void exampleB(int b, ...) { va_list args; va_start(args, b); exampleV(b, args); va_end(args); } static void exampleV(int b, va_list args) { ...whatever you planned to have exampleB do... ...except it calls neither va_start nor va_end... }
b와 args를 모두 인수로 사용하는 exampleV를 도입함으로써 exampleA는 구현을 수정하지 않고도 가변 인수를 exampleB에 전달할 수 있습니다. 그런 다음 이 중개 기능을 사용하여 exampleB의 원래 구현을 방해하지 않고 의도한 작업을 수행할 수 있습니다.
위 내용은 변수 인수 목록을 사용하여 한 함수에서 다른 함수로 변수 인수를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!