>백엔드 개발 >C++ >변수 인수 목록을 사용하여 한 함수에서 다른 함수로 변수 인수를 전달하는 방법은 무엇입니까?

변수 인수 목록을 사용하여 한 함수에서 다른 함수로 변수 인수를 전달하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-07 03:18:10835검색

How to Pass Variable Arguments from One Function to Another with Variable Argument Lists?

가변 인수 목록이 있는 함수에 변수 인수 전달

가변 개수의 인수를 허용하는 함수로 작업할 때 다음을 호출해야 하는 경우가 많습니다. 그러한 기능 중 하나가 다른 기능입니다. 그러나 이미 다른 곳에서 사용 중인 경우 대상 함수를 수정하지 않고 한 함수에서 다른 함수로 인수를 직접 전달하는 것은 문제가 될 수 있습니다.

다음 예를 고려하세요.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.