2012-03-20 4 views
6

인수이 C++ 매개 변수 선언을 이해하고 원인을 탐색하고 도와주세요 찾을 수 here.나는이 함수 선언을 가로 질러 왔을 때 제가 매일 루트 C++ 라이브러리 (root.cern.ch)를 사용

const char *의 이름에 인수 또는 괄호를 사용할 수있는 방법을 모르겠다. 식 va_(fmt)은 나중에 함수 호출이나 생성자처럼 보이지만 단순한 const char *으로 사용됩니다. 처음에는 가변 인수 목록과 관련이 있다고 생각 했었습니다.이 또한 새로운 것이었지만 stdarg.h에 대한 설명서를 읽는 것은이 질문에 전혀 도움이되지 않았습니다.

Google이 도움을 요청하기가 너무 어렵 기 때문에 전화를해야할지 모르겠습니다. 인수가있는 선언? 그것은 좋은 결과를주지 못합니다.

나는 C++을 알고 있다고 생각했지만, 여기서 무슨 일이 벌어지고 있는가? 모든 도움을 주실 수 있습니다.

+1

내 생각 엔 va_' 단순히 매크로이다'는 것이다. 아마도 아무것도하지 않고 그 매개 변수로 확장하는 것일 것입니다. –

답변

11

그것은 매크로이다 - Varargs.h에 :

#if ... 
# define va_(arg) __builtin_va_alist 
#else 
# define va_(arg) arg 
#endif 
+7

우리는 C 프로그래머에게 '#define'은 단지 난독 화라고 말하지만, 우리를 믿는가? * 아니요 ... *^_- –

+0

감사합니다. 나는 심지어 그 파일을 읽었다. 나는 그것을 놓쳐 버렸음에 틀림 없다. – Simon

+0

매크로가 왜 나쁜지에 대한 또 다른 예입니다. 'fmt'가 하나의 타입이라면 구문은'char const *'를 반환하는 함수에 대한 포인터 인'va_'라는 인자를 취하는 함수의 유효한 선언이 될 것입니다. – bames53