사용자 정의 구조와 다양한 유형의 인수 (ints/strings/다른 사용자 정의 구조 ...)를 사용하는 C 함수가 있습니다. 구조 때문에 함수는 각 인수를 처리하기 위해 인수의 유형을 판별 할 수 있습니다.함수에 변수 매개 변수 전달
void doStuff(MyStruct *S,...){ <function code> }
이제 "doStuff"에 'n'개의 상수 인수를 전달할 수있는 다른 함수가 필요합니다. 나는. 이 같은 :의 va_list이처럼 사용할 수 없기 때문에
void useDoStuff(Mystruct *S, int n){ //lets say n=4
va_list arguments;
int i;
for(i = 0 ; i < n ; i++){
if(i%2) arguments.add(6); //example condition for the arguments
else arguments.add("Hello");
}
doStuff(S, arguments); // doStuff(S, "Hello", 6, "Hello", 6);
}
는 당연히이 실 거예요 작업 (만 약에 사용 필요한 것 '시각화'). 불행하게도 구조체 나 'doStuff'함수를 변경할 수 없기 때문에 해결 방법을 찾아야합니다. 그런 해결 방법이 있습니까?
이것은 C가 아니며 C++입니다 (C에는 명시 적 참조가 없습니다). 이것은 XY 문제입니다. 왜 이질적인 인수 목록을 만들려고합니까? 'doStuff'의 _actual_ 정의는 무엇입니까? – Tim
네가 맞다. C에서 참조가 없다. (예제에서 포인터 대신 사용 된 이유는 모르겠다.) 어쨌든 doStuff이하는 일은 실제로 중요하지 않습니다. 요점은 특정 조건을 통과하는 알려지지 않은 수의 상수 인수를 전달해야한다는 것입니다. –
인용구 : "당연히 이것은 작동하지 않을 것입니다. 왜냐하면 va_list는 이와 같이 사용할 수 없기 때문에 (필요한 것만을 '시각화하는'용도로만 사용됩니다.)". 제 말은 ... va_list에 "추가"기능이 있습니까? - 아니. –