2014-04-10 5 views
9

나는 함수를 가질 수있는 클래스가 있으며 특정 함수를 숨기고 싶다. 예를 들어doxygen에서 특정 함수 (C++)를 숨기려면 어떻게해야합니까?

class Test 
{ 

    /** 
    * About Function1 
    * 
    * @param[in] arg1 About arg1 
    * @param[in] arg2 About arg2 
    */   
    public void Function1(int arg1,char arg2); 

    // Presume same documentation for this function also 
    public void Function2(int,char); 

    // Presume same documentation for this function also 
    public void Function3(int,char); 

    // Presume same documentation for this function also 
    public void Function4(int,char); 
} 

내가 Function2에게 어떻게 말합니까?

이제는 현재 시나리오에서 해당 문서와 함께 모든 네 가지 기능 을 표시합니다.

지금, 나는 다음과 같은 속성은 내 .doxygen 규칙 파일에 설정 한 :

EXTRACT_ALL = YES

당신은 나에게 내가 기능 2 말을 숨길 수있는 무언가를 제안시겠습니까?

미리 감사드립니다. 이 같은

답변

6

어떻게 좀은 :

#ifndef DOXYGEN_SHOULD_SKIP_THIS 

/* code that must be skipped by Doxygen */ 
/* in your case a method/function */ 

#endif /* DOXYGEN_SHOULD_SKIP_THIS */ 

그리고 config 파일에서

, PREDEFINED = DOXYGEN_SHOULD_SKIP_THISENABLE_PREPROCESSINGYES로 설정되어 있는지 확인했습니다.

간단히 말해서, 당신은 단지 당신을 위해 일하는 전처리 개념을 이용하고 있습니다!

+0

은 내가 – Rana

+0

이유는 정확히 그렇게 생각합니까 내이가 메쉬 것이다 작성 생각? @Rana – CinCout

+0

감사합니다. 내 프로젝트에서 나는 약 2000 홀수의 파일을 가지고 있으며 아주 좋은 해결책으로 보이지만이 변경을하는 것은 꽤 불가능하다.당신이 뭔가를 문서에 넣을 것을 제안 할 수 있다면, 설정 파일의 일부 설정으로 나는 그 함수를 건너 뛸 수있을 것입니다. 감사합니다. – Rana

0

나는 이런 식으로 달성하기 위해 한번 EXTRACT_SYMBOLS을 사용했다고 생각합니다.

EXCLUDE_SYMBOLS 태그

하나 이상의 심볼의 이름 출력으로부터 제외되어야 (네임, 클래스, 함수, 등)을 지정할 수있다. 기호 이름은 정규화 된 이름, 단어 또는 와일드 카드 *를 사용하는 경우 부분 문자열 일 수 있습니다. 예 : ANamespace, AClass, AClass :: ANamespace, ANamespace : * 테스트

불행하게도 나는 완전히 기억 나 설정 항목을 찾을 수 없습니다. 당신은 설정 파일에 EXTRACT_PRIVATE = NO이있는 경우

EXCLUDE_SYMBOLS = Test::Function2* 
+0

출력에서이 함수를 건너 뛰려면 EXCLUDE_SYMBOLS = Agent :: Label (int) const와 같은 다음 코드를 추가하려고 시도했지만 작동하지 않습니다. Lebel이 다음 서명이있는 함수 인 경우 Label (int) const – Rana

7

는, 당신은 Doxygen을에 비공개로 구성원을 표시 할 수 있으며 그 구성원에 대한 문서를 생성하지 않습니다

/// @private 
public void Function2(int, char); 

보너스 질문 : 당신이 원한다면 ...

/** 
* About Function1,2,3,4... 
*/ 
/// @{ 
public void Function1(int arg1, char arg2); 
public void Function2(int arg1, char arg2); 
public void Function3(int arg1, char arg2); 
public void Function4(int arg1, char arg2); 
/// @} 

/** 
* About Function1,2,3,4... 
*/ 
public void Function1(int arg1, char arg2); 
/// @copydoc Function1 
public void Function2(int arg1, char arg2); 
/// @copydoc Function1 
public void Function3(int arg1, char arg2); 
/// @copydoc Function1 
public void Function4(int arg1, char arg2); 

이 하나가 @{를 사용 : 당신이 그렇게 이러한 방법 중 하나를 사용하여 할 수있는 모든 4 명에 대해 같은 문서를 사용은 설정 파일에 DISTRIBUTE_GROUP_DOC = YES을 사용해야합니다.

6

사용 콘드 나 내부

/*! \cond PRIVATE */ 
//only documented if cond is enabled 
// ... 
/*! \endcond */ 
관련 문제