2010-01-14 6 views
6

코드 :문서화 변수

#include <stdio.h> 

/* 
* \var int iOne 
* \brief Integer 1 
*/ 
/* 
* \var int iTwo 
* \brief Integer 2 
*/ 
/* 
* \var int iThree 
* \brief Integer 3 
*/ 

/** 
* \brief Imitates a sheep. 
*/ 
void sheep(); 

/** 
* \brief Main function for test code 
*/ 
int main() { 
    int iOne, iTwo, iThree; 
    iOne = 1; 
    iTwo = 2; 
    iThree = 3; 
    printf("%d %d %d", iOne, iTwo, iThree); 

    return 0; 
} 

void sheep() { 
    printf("Meeeh"); 
} 

iOne, iTwo 그리고 그건 내 의도가 있었지만 iThree에 대한 설명을 생성하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

8

/**으로 Doxygen 주석의 의견을 열어야합니다.

하지만,이 일을 명확하게 할 수 있습니다

int main() { 
    /** \brief Integer 1 */ 
    int iOne; 
    /** \brief Integer 2 */ 
    int iTwo; 
    /** \brief Integer 3 */ 
    int iThree; 
    /** ... and so on ... */ 
} 

당신이 당신의 문서를 파괴하지 않고 변수의 이름을 변경할 수 있습니다이 방법을하고 있기 때문에 소스 코드를 읽을 필요가 다른 프로그래머에 또한 쉽게 변수의 설명은 파일의 다른 위치가 아니라 그 옆에 있습니다.

+0

감사합니다. 코드를 더 이해하기 쉽습니다. 그러나 코드 내에서 \ var 정의를 올바르게 수행하는 방법을 알고 싶습니다. 그렇게하는 올바른 방법은 무엇입니까? – Pieter

+1

Pieter : 우선, 파일 자체 ('/ ** @file * /')를 문서화해야한다고 생각합니다. 그리고 나서 제 대답에서 말했듯이, Doxygen이 로컬 변수를 문서화 할 수 있다고 생각하지 않습니다. – Joey

+2

지역 변수이므로이 방법이 효과가 없을 것이라고 생각합니다. 이 답변을 개선해야합니다. 오해의 소지가 있습니다. –

13

DOxygen은 클래스 및 기능 헤더를 문서화하기 위해 만들어졌으며, 다시 말하면 인터페이스입니다. 이 문서는 다른 프로그래머가 학급과 기능을 올바르게 사용하기 위해 연구하는 것으로 생각하십시오. DOxygen을 사용하여 구현을 문서화해서는 안됩니다. 대신 소스의 로컬 변수를 // 또는 /* */으로 문서화하십시오.

DOxygen에서 주석을 작성하는 데는 여러 가지 방법이 있으며, 그 중 일부 (멤버 변수의 경우)는 설명서 here에서 볼 수 있습니다. 아래에 복사했습니다.

int var; /*!< Detailed description after the member */ 

int var; /**< Detailed description after the member */ 

int var; //!< Detailed description after the member 
     //!< 

int var; ///< Detailed description after the member 
     ///< 

int var; //!< Brief description after the member 

int var; ///< Brief description after the member 
+0

Doxygen이 이것을 사용해서는 안되지만 먼저 Doxygen이 문서화를 위해 제공하는 모든 지원을 보여줘야한다는 것을 약간 혼란스럽게 느낍니다. Doxygen이 "인터페이스"를 문서화하기위한 것이지만 나머지는 문서화하지 않았다는 소식통이 있습니까? – Zimano

+1

내가 제공하는 스 니펫은 "file, struct, union, class 또는 enum"의 멤버 인 변수를 문서화하는 방법을 보여줍니다. OP의'iOne, iTwo, iThree' 변수는'main()'내부 변수이기 때문에 어떤 인터페이스 레벨 범위에서도 접근 할 수 없으므로 Doxygen에 의해 문서화되지 않을 것입니다. 다른 방법을 넣으십시오 : Doxygen은'i'의 범위가''for (int i = 0; i <10; i ++) ''문에서''for' 그것이 의미를 갖기에는 너무 제한적입니다. – Richard

+1

이제 알겠습니다. 감사! – Zimano