2011-08-21 3 views
1

가변 길이 인수를 길이를 확인하지 않고 함수에 전달할 수 있습니까? 이것은 List 나 다른 것을 만들 수 있고 가변 길이 인수 함수에 전달할 수 있습니까? 나는 함수를 구현하기 위해 우리가 va_list 할 수 있음을 안다; 하지만 이제 인수 목록을 얻었으므로 길이를 계산해야합니다. 그런 다음 여러 변수를 정의하고 전달해야합니다. 더 편리하게 만들 수 있습니까?가변 길이 인수를 길이를 확인하지 않고 함수에 전달합니까?

답변

1

당신은 항상이 완료되었음을 나타내는 목록의 마지막에 특별한 "마커"인수를 추가 할 수

char **args = { "one", "two", NULL } 
function(args); 
... 
void function (char **args) { 
    char *p; 
    int i = 0; 
    p = args[i]; 
    while(p != NULL) { 
    ... 
    i++; 
    p = args[i]; 
    } 
} 
+0

NULL처럼 이것은 VAR-args를 기반으로하지 않습니다. –

+0

아니, 그렇지 않습니다. 그러나 그것은 작동하고, 나는 여러 번 행동에서 그것을 보았습니다. –

+0

또한 컴파일되지 않습니다. 'args [i]'는'char' 타입입니다; 'p'에 할당 할 수 없습니다. –

관련 문제