문제:
두 개의 함수가 있습니다. 예( ) 및 exampleB()(유사한 변수 인수 사용) 목록:
void example(int a, int b, ...); void exampleB(int b, ...);
다른 곳에서 사용되므로 exampleB()의 가변 인수 목록을 수정하지 않고 exampleB() 내에서 example()을 호출해야 합니다.
해결책:
안타깝게도 C에는 변수 인수를 전달하는 직접적인 방법이 없습니다. 이를 위해서는 도우미를 정의해야 합니다. 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... }
이 설정에서:
exampleV()를 중개자로 추가하면 원래 구현을 수정하지 않고도 가변 인수를 exampleB()에 전달할 수 있습니다.
위 내용은 가변 인수 목록을 사용하여 C 함수 간에 가변 인수를 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!