2011-09-15 3 views
-3

다음은 내 메소드의 구현입니다.c/C++에서 다음 함수의 모든 인수를 얻는 방법?

static VALUE myMethod(VALUE self, VALUE exc, const char* fmt, ...) { 
    // Need to get all the arguments passed to this function and print it 
} 

함수는 다음과 같이 호출됩니다.

myMethod(exception, ""Exception message: %s, Exception object %d", 
      "Hi from Exception", 100); 

모든 인수에 액세스하여이를 인쇄하는 myMethod() 코드를 제공 할 수 있습니까?

미리 감사드립니다.

+1

코드 요청은 좋지 않습니다. – Mahesh

+1

시도한 내용과 직면 한 구체적인 문제점을 알려주십시오. – xk0der

답변

4

va_start 및 va_arg 매크로는 함수에서 변수 인수를 가져 오는 데 사용됩니다. 예제는 Microsoft 사이트에서 찾을 수 있습니다. http://msdn.microsoft.com/en-us/library/kb57fad8(v=vs.71).aspx

경우에 따라 몇 가지 인수를 제공하고 형식을 정확히 알 수 있도록 형식 문자열을 구문 분석해야하므로 약간 까다 롭습니다. 다행히도, CRT에는이를위한 기능이 포함되어 있습니다. vfprintf 함수는 va_list (va_start에서 가져옴)를 제공 할 수 있습니다. vfprintf는이 함수를 사용하여 모든 추가 인수를 처리합니다. 예를 들어 http://www.cplusplus.com/reference/clibrary/cstdio/vfprintf/을 참조하십시오.

+0

인쇄 기능에 대한 추가 정보는 http://www.tin.org/bin/man.cgi?section=3&topic=vsnprintf에 나와 있습니다. 이들은 표준화되어 있으며 Microsoft 환경에도 존재합니다. –

1

한 가지 방법은 vsnprintf()를 사용하는 것입니다.

샘플 코드 :

char buf[256]; 
va_list args; 

va_start(args, fmt); 

if(vsnprintf(buf, sizeof(buf), fmt, args) > 0) 
    fputs(buf, stderr); 

va_end(args); 
관련 문제