2014-09-03 2 views

답변

3

<stdarg.h>의 의미로 가변 기능의 경우 실제로는 (template varargs 제외). 당신은

void foo(int, ...); 

int x = 0, y = 1; 
foo(2,x,y); 

를 호출하고 xy (가) 참조에 의해 전달 될 기대할 수 없다.

foo(2, &x, &y); 

을 그리고 당신은 아마 foo(2,&x,&y)

+0

그것을 생각해 보니, 그 트릭을 혼자서 생각해야했습니다! 감사. – shasan

3

stdarg.h으로는 작업 할 수 없지만 C++ 기능을 사용할 수는 있습니다.

std::tie의 구현을 표준 라이브러리에서 수행하는 방법을 살펴 보는 것이 좋습니다.

+1

FOO(x,y)를 변환하는 가변 인자 템플릿 트릭이나 전처리 매크로 트릭을 할 수 그러나 이것은 템플릿 가변 인자이다 : 그러나, 당신은 자신의 주소를 전달할 수 있습니다. OP가 '' –

+1

에 대해 묻습니다. 아, stdarg.h에 대한 참조를 알지 못했습니다. 헤더가 c 헤더 (참조가 존재한다는 것을 모르는) 인 방법을 보면서이 헤더 내에 어떤 메커니즘이 있는지 의심 스럽습니다. –

관련 문제