사용자 도구

사이트 도구


tool:doxygen

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
tool:doxygen [2020/01/22 15:37] – [링크] kieunstool:doxygen [2024/04/23 22:43] (현재) – 바깥 편집 127.0.0.1
줄 1: 줄 1:
 +~~Title: 독시젠 A to Z~~
  
 +독시젠을 사용해서 코드에 문서를 남기는 방법을 정리한다.
 +
 +잘 활용해서 문서 작성 압박에서 조금이라도 벗어나보자.
 +
 +{{htmlmetatags>metatag-robots=() 
 +metatag-keywords=(독시젠, 독시젠 사용법,doxygen,doxygen howto) 
 +metatag-description=(독시젠 사용법)
 +}}
 +
 +====== 독시젠 기본 매뉴얼 ======
 +
 +  * 독시젠 매뉴얼 링크 : http://www.doxygen.nl/manual (영문)
 +  * 하단의 링크가 깨진 경우, 위 주소에서 다시 찾아보면 나옴
 +
 +===== 독시젠 사용한 샘플 =====
 +
 +  * cpp 또는 유사 언어 (php)에서 써 먹을 수 있는 doxygen 실용 예제. 쓰려는데 막히면 이걸 보면 오케. 내가 아는 범위까지만 작성 되어 있다.
 +  * {{:tool:cpptest-20130606.zip}}
 +  * [[http://kieuns.com/other/doxygen|CppTest의 DoxyGen 결과물 - 웹 샘플]]
 +
 +===== doxygen 주석 방식 =====
 +
 +==== 주석 형식의 기본 ====
 +
 +내 손에 가장 익은 방식
 +
 +<code>
 +///\독시젠키워드
 +/// 위의 키워드에 대한 이어지는 설명
 +
 +또는, 여러 키워드를 입력해야 하는데 /// 를 타이핑 하기 귀찮은 경우
 +
 +/*!
 +\독시젠키워드
 +*/
 +
 +또는,
 +
 +/*!
 +@독시젠키워드
 +*/
 +</code>
 +
 +%%@%%로 시작되는 독시젠 키워드는 phpdoc에서 인식하므로 (다른 것도 인식하지만), 이쪽이 좀 더 범용이 아닐까 싶다. 
 +
 +  이후에는 전부 @나 \를 사용해서 작성한다.
 +
 +독시젠 키워드가 선언된 이후부터는 
 +  * 다음 독시젠 키워드가 나올때 까지 
 +  * 주석이 끝나는 완전히 전부 부분까지
 +이전에 선언된 독시젠 키워드에 해당 되는 설명으로 읽혀진다.
 +
 +<code>
 +/*!
 + * @breif 
 + * 여기부터는 '\\brief'에 대한 설명으로 모두 포함된다.
 + * 줄을 끊어서 쓰더라도 한줄로 정리 된다.
 + * @return 새로온 독시젠 키워드가 나왔으므로 이전 brief에 대한 읽기는 끝나게 되고 
 + * return에 해당되는 주석으로 읽혀진다.
 + */
 +</code>
 +
 +===== Class에 대해서 =====
 +
 +<code cpp>
 +///@brief 아래 클래스에 대한 설명
 +class TestClass
 +{
 +public:
 +  LONGLONG  llSomeVal; ///< 롱롱 타입의 변수
 +  int       nSomeVal; ///< 인티져 타입의 변수
 +};
 +</code>
 +
 +  * **클래스 위에 적는 경우라면 이 키워드는 필요 없다.**
 +  * 변수에 대해서 설명을 추가할 때는, %%///<%% 를 그대로 사용해야 변수 주석으로 인식한다.
 +
 +<code cpp>
 +///\class AbcdClass filename.h "inc\filename.h"
 +///\brief 뭐 소스 위에 적지 않는 경우 쓰는거지.
 +</code>
 +
 +  * \class 키워드는 클래스 위에 적지 않고 다른 위치에 적는 경우, 무엇을 위한 키워드인지 알려주기 위해서 적는다.
 +
 +class, file, 함수에 대해서,
 +
 +각각의 소스 바로 위에 쓰지 않고 다른 곳에 쓸 수도 있는데, **주석이 너무 많아져서 코드 보는 것이 힘들어지는 경우** 주석 부분만 다른 곳으로 옮겨 독시젠 문서에 포함되게끔 할 수 있는 <color silver><sup>쓸데없는</sup></color> 기능.
 +
 +==== 멤버 변수에 주석 달기 ====
 +
 +<code cpp>
 +class IamTheClass
 +{
 +  int k; ///< 이건 멤버 변수야. 로컬 변수의 주석은 무시당한다.
 +  void int kkk()
 +  {
 +    int mm; ///< mm 이라는 로컬 변수야. 독시젠이 난 무시할거야.
 +  }
 +}
 +</code>
 +
 +==== 기타 ====
 +
 +<code>
 +///\brief RootThree를 위해서 사용될 콜백 함수
 +typedef bool (__stdcall *CALLBACKFUNCTYPE)(IN RootThree*, IN void*);
 +</code>
 +
 +==== 함수를 위한 키워드 ====
 +
 +  * [[http://www.doxygen.nl/manual/commands.html|doxygen special commands]]
 +
 +함수용 키워드들
 +
 +<code cpp>
 +/*!
 + * @brief  함수에 대한 설명. (한줄 이상) 다음 키워드가 나올때까지 '///' 다음의 문장을 brief의 문장으로 인식한다.
 + * @details  결과 모르지만, 추가 설명이 필요하면 사용하라는 키워드. (more)를 눌렀을때 보여줄 텍스트.
 + * @param[in] 파라미터 이름 파라미터 설명, [in]은 입력용 파라미터라는 뜻.
 + * @param[out] 파라미터 이름 파라미터 설명, [out]은 입력용 파라미터라는 뜻.
 + * @return 리턴값에 대한 설명, 리턴 값이 여럿이라 추가 설명이 필요하면 retval을 사용한다. '\returns'와 같다.
 + * @retval 리턴값 리턴 값에 대한 설명. 
 + * @bug 알고 있는 버그에 대해서 적는다.
 + * @todo todo에 대해서 적는다. 
 + * @warning 주의 사항에 대해서 적는다.
 + * @see '다른 파일 이름'을 적는다. 다른 곳을 참조하라고 할때 쓰는데.. 직접  써본적은 없어서.
 + */
 +</code>
 +
 +<code cpp>
 +// 독시젠에서 확인한 예제
 +/*!
 + * @brief 독시젠에서 함수 설명이 제대로 만들어지는지 확인하기 위한 함수.
 + * @details 'more'를 누르면 보여지는 설명.
 + * @param[in] aa 입력용 숫자값
 + * @param[in] bb 입력용 char 값
 + * @param[out] dd 출력용 버퍼
 + * @return 리턴용 값에 대한 설명
 + * @retval -1 실패
 + * @retval 0 성공
 + * @retval 1 성공+뭔가 더
 + * @bug 이 함수에서 가끔 뻗는데 아직 이유를 모른다.
 + * @warning 이 함수에서 가끔 뻗는데 아직 이유를 모른다.
 + * @see OUT_GRP_TEST
 + * @ref page2
 + */
 +int DoxyFuncTest( int aa, char bb, char* dd );
 +</code>
 +
 +
 +===== 기타 =====
 +
 +?? <color silver><sup>이건, 왜 적을걸까????</sup></color> 
 +
 +<code>
 +///@brief RootThree를 위해서 사용될 콜백 함수
 +typedef bool (__stdcall *CALLBACKFUNCTYPE)(IN RootThree*, IN void*);
 +</code>
 +
 +
 +===== 예제 1 =====
 +
 +  * 설명을 작성하기 전에 코드 예제
 +  * 샘플 파일 (독시젠 설정 파일 포함) : 문서 맨 위에 있음.
 +
 +코드에 설명용 주석이 많기 때문에 부담스러워 보이지만, 독시젠 결과를 보면 해볼만하다고 생각 할 것임.
 +
 +아래의 예시 코드는, 아래 문서를 만들기 위한 주석 달기임
 +
 +  * [[http://kieuns.com/other/doxygen/annotated.html|클래스 샘플]]
 +  * [[http://kieuns.com/other/doxygen/class_root_three.html|클래스 RootThree 샘플]]
 +
 +<code cpp>
 +/*!
 + * @file CppTest.cpp
 + * C++ 문법과 DoxyGen 문법을 테스트하기 위한 코드
 + */
 +#include "stdafx.h"
 +#include <iostream>
 +#include <conio.h> ///< getch() 함수를 사용하기 위해서 포함되었다.
 +
 +using namespace std;
 +
 +////////////////////////////////////////////////////////////////////////////
 +
 +/*!
 + * @mainpage C++ & DoxyGen 문법 테스트
 + * C++과 독시젠 문법을테스트하기 위한 정보
 + * @section intro_sec Introduction
 + * This is the introduction.
 + * @section install_sec Installation
 + * @subsection step1 Step 1: Opening the box
 +*/
 +
 +////////////////////////////////////////////////////////////////////////////
 +
 +///@page page1 A documentation page
 +///@tableofcontents
 +/// Leading text.
 +///@section sec An example section
 +/// This page contains the subsections \ref subsection1 and \ref subsection2.
 +/// For more info see page \ref page2.
 +///@subsection subsection1 The first subsection
 +/// Text.
 +///@subsection subsection2 The second subsection
 +/// More text.
 +
 +///@defgroup ROOT_INIT Root* 클래스를 초기화 하는 함수들
 +///
 +///@defgroup VIRTUAL_TEST virtual 기능을 테스트 하기 위한 함수들
 +///
 +///@defgroup GLOBAL_FUNC 클래스에 속하지 않는 외부 함수들
 +///
 +///@defgroup OUT_GRP_TEST 외부 그룹에 속하는 함수 테스트
 +///
 +
 +////////////////////////////////////////////////////////////////////////////
 +
 +/*!
 + * @page page2 Another page
 + * @Even more info.
 + */
 +
 +///@static
 +static int _varG = 0; ///< 스태틱 상태값
 +
 +///@brief 최상단 루트 클래스
 +///@ingroup VIRTUAL_TEST
 +class RootZero
 +{
 +public:
 +  ///@brief 소멸자 클래스로, 함수 이름을 출력하고 종료한다.
 +  virtual ~RootZero()
 +  {
 +    cout << __FUNCTION__ << endl;
 +  }
 +  ///@brief virtual 기능 확인용 테스트 함수.
 +  /// child 클래스에서만 사용하도록 virtual pure 로 선언된다. 
 +  ///@ingroup ROOT_INIT 
 +  virtual bool initHandler() = 0;
 +};
 +
 +///@class RootOne
 +///@brief RootZero로 부터 상속된 테스트 클래스 2
 +///@ingroup VIRTUAL_TEST
 +class RootOne : public RootZero
 +{
 +public:
 +  RootOne()
 +  {
 +    cout << __FUNCTION__ << endl;
 +  }
 +  virtual ~RootOne()
 +  {
 +    cout << __FUNCTION__ << endl;
 +  }
 +
 +  ///@brief virtual 기능 확인용 테스트 함수. 함수 이름을 출력하고 종료한다.
 +  ///@ingroup ROOT_INIT 
 +  virtual bool initHandler()
 +  {
 +    cout << __FUNCTION__ << endl;
 +    return true;
 +  }
 +
 +  int mnTest; ///< 테스트용 인티져값
 +};
 +
 +///@brief RootOne로 부터 상속된 테스트 클래스 3
 +///@ingroup VIRTUAL_TEST
 +class RootTwo : public RootOne
 +{
 +public:
 +  RootTwo()
 +  {
 +    cout << __FUNCTION__ << endl;
 +  }
 +  virtual ~RootTwo()
 +  {
 +    cout << __FUNCTION__ << endl;
 +  }
 +
 + ///@brief virtual 기능 확인용 테스트 함수. 
 + /// 부모 클래스의 같은 함수를 실행하고 그 뒤에 함수 이름을 출력하고 종료한다.
 + ///@ingroup ROOT_INIT 
 + virtual bool initHandler()
 + {
 + if( ! __super::initHandler() ) return false;
 + cout << __FUNCTION__ << endl;
 + return true;
 + }
 +};
 +
 +///@brief RootTwo로 부터 상속된 테스트 클래스 4
 +///@ingroup VIRTUAL_TEST
 +class RootThree : public RootTwo
 +{
 +public:
 +  RootThree()
 +  {
 +    cout << __FUNCTION__ << endl;
 +  }
 +  virtual ~RootThree()
 +  {
 +    cout << __FUNCTION__ << endl;
 +  }
 +
 +  ///@brief virtual 기능 확인용 테스트 함수. 
 +  /// 부모 클래스의 같은 함수를 실행하고 그 뒤에 함수 이름을 출력하고 종료한다.
 +  ///@ingroup ROOT_INIT 
 +  virtual bool initHandler()
 +  {
 +    if( ! __super::initHandler() ) return false;
 +    cout << __FUNCTION__ << endl;
 +    return true;
 +  }
 +
 +  ///@ingroup OUT_GRP_TEST 
 +  int Grp1() {}
 +  int Grp2() {}
 +
 +  ///@defgroup DOXY_MEMBER_GROUP 독시젠 그룹핑 테스트
 +  ///@{
 +  void Grp3() {}
 +  void Grp4() {}
 +  ///@}
 +
 +  int mnABC; ///< abc int 변수
 +  int mnDEF; ///< a var in group OUT_GRP_TEST
 +
 +  ///@brief 독시젠에서 함수 설명이 제대로 만들어지는지 확인하기 위한 함수.
 +  ///@details 'more'를 누르면 보여지는 설명.
 +  ///@param[in] aa 입력용 숫자값
 +  ///@param[in] bb 입력용 char 값
 +  ///@param[out] dd 출력용 버퍼
 +  ///@return 리턴용 값에 대한 설명
 +  ///@retval -1 실패
 +  ///@retval 0 성공
 +  ///@retval 1 성공+뭔가 더
 +  ///@bug 이 함수에서 가끔 뻗는데 아직 이유를 모른다.
 +  ///@warning 이 함수에서 가끔 뻗는데 아직 이유를 모른다.
 +  ///@see OUT_GRP_TEST
 +  ///@ref page2
 +  int DoxyFuncTest( int aa, char bb, char* dd );
 +
 +  /*!
 +   * @fn int DoxyFuncTest2( int aa, char bb, char* dd )
 +   * @brief 독시젠에서 함수 설명이 제대로 만들어지는지 확인하기 위한 함수.
 +   * @details 'more'를 누르면 보여지는 설명. \\fn 은 함수 위에 주석을 달지 않을때 쓰는 기능.
 +   * @param[in] aa 입력용 숫자값
 +   * @param[in] bb 입력용 char 값
 +   * @param[out] dd 출력용 버퍼
 +   * @return 리턴용 값에 대한 설명
 +   * @retval -1 실패
 +   * @retval 0 성공
 +   * @retval 1 성공+뭔가 더
 +   * @bug 이 함수에서 가끔 뻗는데 아직 이유를 모른다.
 +   * @warning 이 함수에서 가끔 뻗는데 아직 이유를 모른다.
 +   * @see OUT_GRP_TEST
 +   * @ref page2
 +   * @example CppTest.cpp
 +   * 이 함수의 예제.
 +   * char _buf[100];
 +   * DoxyFuncTest2( 1, 'a', _buf );
 +   */
 +  int DoxyFuncTest2( int aa, char bb, char* dd );
 +};
 +
 +
 +////////////////////////////////////////////////////////////////////////////
 +
 +///\brief Root계열 클래스를 생성한다. 그리고 리턴.
 +///\return RootZero* 타입으로 생성된 포인터를 리턴한다.
 +RootZero* getRootClassPtr()
 +{
 +  return new RootThree;
 +}
 +
 +///@brief 프로그램 시작 지점
 +///@param[in] argc 실행시 넘겨지는 파라미터의 개숫
 +///@param[in] argv 실행시 넘겨지는 파라미터 문자열 리스트
 +///@return 프로그램의 실행 결과값.
 +///@warning 워닝 경고문 테스트
 +///@ingroup GLOBAL_FUNC
 +int _tmain(int argc, _TCHAR* argv[])
 +{
 +  RootZero* _ptr = getRootClassPtr();
 +  _ptr->initHandler();
 +  
 +  _getch();
 +  
 +  delete _ptr;
 +  
 +  _getch();
 +  
 +  return 0;
 +}
 +</code>
 +
 +===== 예제 2 =====
 +
 +==== 예제코드 ====
 +
 +doxygen 키워드와 ms-xml로 작성된 클래스 설명 부분.
 +
 +여러가지 재미 있는 키워드가 활용 되었다. [[#만들어진_샘플|결과 화면은 더 아래쪽]]에.
 +
 +<code csharp>
 +/// <summary>
 +/// 로그를 출력할 윈도우를 만든다.<br/>
 +/// log() 와 watchValue() 를 실행할때 init() 함수를 호출해서 로그 파일과 GameObject 를 만든다.
 +/// </summary>
 +/// 
 +/// <example>
 +/// 스태틱 객체가 아니므로, 어느 오브젝트엔가는 붙여서 사용해야 한다.
 +/// 그 후에는 static으로 정의된 몇 함수를 사용해서 로그를 남기면 된다.
 +/// 
 +/// @code{.cs}
 +/// Console.log( "일반 로그" ); // 콘솔버퍼, 파일에 메시지를 남기고, Debug.Log()는 옵션 플래그에 따라 넣는다.
 +/// Console.debug( "디버그용 로그" ); // Debug.Log()에도 메시지를 출력한다. Debug.Log() 메시지를 한번에 빼기 위한 용도로 만들었다.
 +/// @endcode
 +/// 
 +/// 이외에도 변수 와치 기능을 사용해서, 어떤 값이 어떻게 변해가는지 화면의 어느 고정된 위치에 표시한다.<br/>
 +/// 값이 추가되는대로 자동으로 늘어나서 표시된다.
 +/// 
 +/// @code{.cs}
 +/// Console.watchValue( "변수 또는 키이름", 값 );
 +/// @endcode
 +/// </example>
 +/// 
 +/// <remarks>
 +/// <para>코딩 가이드</para>
 +/// 
 +/// <list type="bullet">
 +/// <item><description>
 +/// GUI 스크립트 가이드 : http://docs.unity3d.com/Documentation/Components/GUIScriptingGuide.html
 +/// </description></item>
 +/// <item><description>
 +/// GUI 레이아웃모드 : http://docs.unity3d.com/Documentation/Components/gui-Layout.html
 +/// </description></item>
 +/// </list>
 +/// 
 +/// <para>사용한 함수 레퍼런스</para>
 +/// <list type="bullet">
 +/// <item><description>
 +/// GUILayout : http://docs.unity3d.com/Documentation/ScriptReference/GUILayout.html 
 +/// </description></item>
 +/// <item><description>
 +/// GUILayout.Window() : http://docs.unity3d.com/Documentation/ScriptReference/GUILayout.Window.html
 +/// </description></item>
 +/// <item><description>
 +/// GUILayout.Box() : http://docs.unity3d.com/Documentation/ScriptReference/GUILayout.Box.html
 +/// </description></item>
 +/// <item><description>
 +/// GUILayout.BeginScrollView() : http://docs.unity3d.com/Documentation/ScriptReference/GUILayout.BeginScrollView.html
 +/// </description></item>
 +/// <item><description>
 +/// GUI Controls : http://docs.unity3d.com/Documentation/Components/gui-Controls.html
 +/// </description></item>
 +/// </list>
 +/// </remarks>
 +/// @todo 텍스트 입력필드도 넣어서 입력을 받아서 대응 되도록 하는 것.
 +public class Console : MonoBehaviour
 +{
 +}
 +</code>
 +
 +==== 만들어진 샘플 ====
 +
 +[[#예제코드|위쪽 예제코드로 돌아가기]]
 +
 +^ 위의 주석의 샘플                       ^
 +| {{:tool:doxygen-console-sample-1.png}} |
 +===== 기타 =====
 +
 +  * [[language:java:javadoc]] javadoc 스타일로 주석 달기
 +
 +====== Page 와 Section ======
 +
 +  * Page 를 만들고 다른 페이지와 연결 되도록 링크 구성
 +  * 각 페이지는 섹션과 서브 섹션으로 구성
 +  * 최종 tableofcontents 키워드로 최종 챕터 정리 가능
 +
 +  * 아래 Markdown 과 함께 사용 되어, 코드 문서화이외의 문서 작업이 가능<color silver><sup>할걸??</sup></color> 
 +
 +갈수록 링크가 늘어나는 독시젠 문서화 설명 : [[http://michelf.ca/projects/php-markdown/extra/#table|php 마크업]]
 +
 +===== PAGE, SUBPAGE =====
 +
 +  * **mainpage** : 최초로 보여지는 페이지 설정
 +  * **subpage** : 이동할 다른 페이지의 링크 설정
 +
 +<code cpp>
 +// 아래 내용이 모두 한 파일에 있어도, 각 다른 페이지를 만들어준다.
 +
 +/*!
 +@mainpage I am THE Main
 +
 +이 문서의 다른 페이지에 대해서
 +- @subpage intro 
 +- @subpage advanced
 +*/
 +
 +/*!
 +@page intro 일반사용
 +일반 사용에 대한 문서
 +*/
 +
 +/*!
 +@page advanced "고급사용"
 +일반 사용에 대한 문서
 +*/
 +</code>
 +
 +
 +===== Section, SubSection =====
 +
 +이런 관계인 것은 알겠는데
 +
 +  * Section
 +    * subsection
 +    * subsection
 +
 +%%#, ##, ##%%로 사용되는 헤더1, 헤더2, 헤더3 같은거랑 무슨 차이가 나는지 잘 모름.
 +
 +<color red>section, subsection은 파라미터가 2개 사용하는 것 주의</color>
 +
 +  * %%@section <section-ref-name> <section-text>%%
 +  * %%@subsection <section-ref-name> <section-text>%% 
 +
 +<code cpp>
 +/*!
 +@section first_section 첫번째 섹션
 +첫번째 섹션 내용
 +
 +@subsection first_sec_sec1 첫 섹션의 서브 섹션
 +첫번째 서브 섹션
 +
 +@subsection first_sec_sec2 첫 섹션의 두번째 서브 섹션
 +두번째 서브 섹션
 +*/
 +</code>
 +
 +===== tableofcontents =====
 +
 +아직은..
 +
 +===== 예제 =====
 +
 +|< 100% - - >|
 +| {{:tool:doxgen-markdown-test-1.png|}} | <code>
 +/*!
 +@mainpage I am THE Main
 +
 +이 문서의 다른 페이지에 대해서
 +- @subpage intro 
 +- @subpage advanced
 +
 +@section first_sec 섹션1
 +
 +@subsection steam_subsec 실행 방법 (쓸게 없어서)
 +
 +# 스팀 실행 방법
 +
 +- 컴터를 켠다
 +- 윈도우즈에 들어간다.
 +- 스팀을 켠다.
 +
 +## 스팀에서 게임 실행 방법
 +
 +- 아 쓸게 없어서..
 +  1. 스팀에서 목록을 확인한다.
 + 2. 업데이트를 확인한다.
 +
 +@subsection table_usage 테이블 추가 방법
 +
 +첫째헤더  | 둘째헤
 +------------- | -------------
 +셀 내용  | Content Cell 
 +() | Content Cell 
 +셀 | 셀 6
 +
 +내용이 비어있는 셀은 인식되지 않는다.
 +
 +*/
 +
 +/*!
 +@page intro 일반사용
 +일반 사용에 대한 문서
 +
 +*/
 +
 +/*!
 +@page advanced 고급사용
 +일반 사용에 대한 문서
 +*/
 +</code> |
 +====== Markdown : 추가 문서 작업 ======
 +
 +코드에 설명을 추가하는 것만으로는 문서화가 부족한데,
 +추가 설명을 위키를 작성하는 것처럼 쓸 수 있는 Markdown 키워드가 지원된다.
 +
 +  * [[http://michelf.ca/projects/php-markdown/extra/#table|php마크다운, 얘가 끝판왕인거 같음]]
 +  * 과거의 링크들 : [[http://www.doxygen.nl/manual/markdown.html|Doxygen Markdown]]
 +  * [[http://daringfireball.net/projects/markdown/basics|보다 근본적인 키워드 설명]]
 +
 +
 +===== 단락 구분 =====
 +
 +한줄 비워두는 것으로 단락과 단락을 구분
 +
 +<code>
 +첫번째 단락입니다.
 +
 +두번째 단락입니다. 단락이 새로 시작됩니다.
 +</code>
 +
 +===== 헤더(목차) =====
 +
 +첫번째 두번째 목차까지 지원.
 +<code>
 +첫번째 헤더
 +===========
 +
 +두번째 헤더
 +-----------
 +</code>
 +  * 헤더 키워드는 스트링 길이만큼 필요하지 않고, **2개 이상이면 됩니다.**
 +
 +1~6까지 지원하는 키워드도 있는데 %%#%% 키워드를 씁니다.
 +
 +<code>
 +# 첫번째 헤더 
 +### 3번째 헤더 
 +</code>
 +
 +===== 인용문 =====
 +
 +<code>
 +> 인용문의 시작.
 +> spanning multiple lines
 +</code>
 +
 +뭔가 하나 더 있는데, 이해 안됨.
 +
 +===== 리스트(목록) =====
 +
 +  * 단순히, +, -, * 로 시작되면 목록 형식으로 변환됨
 +  * 더 하위 리스트는 탭으로 인덴트 해주면 하위 항목으로 인식됩니다.
 +
 +<code>
 +- Item 1
 +
 +  More text for this item.
 +
 +- Item 2
 +  + nested list item.
 +  + another nested item.
 +- Item 3
 +</code>
 +
 +숫자형 리스트를 사용할 수도 있다. **숫자를 그대로 쓰라**
 +
 +<code>
 +1. First item.
 +2. Second item.
 +</code>
 +
 +  * [[http://www.doxygen.nl/manual/markdown.html#mddox_lists|리스트 작성에 대한 상세정보는 여기]]
 +
 +===== 코드 =====
 +
 +코드는 단락을 구분 지은 다음, 공백 4칸을 사용하면 만들 수 있다.
 +
 +<code>
 +This a normal paragraph
 +
 +    This is a code block
 +
 +We continue with a normal paragraph again.
 +</code>
 +
 +  * [[http://www.doxygen.nl/manual/markdown.html#mddox_code_blocks|좀더 자세한 것은 여기]]
 +
 +또는
 +
 +<code>
 +1.  List item
 +
 +    Not an indented code block, but a second paragraph
 +    in the list item
 +
 +~~~~{.cs}
 +This is a code block, fenced-style
 +~~~~
 +</code>
 +
 +간단한 코드 추가
 +
 +(`) 키워드로 간단한 코드 효과를 넣을 수 있다.
 +
 +<code>
 +Use the `printf()` function.
 +</code>
 +
 +===== 테이블 =====
 +
 +기본 
 +
 +<code cpp>
 +First Header  | Second Header
 +------------- | -------------
 +Content Cell  | Content Cell
 +Content Cell  | Content Cell
 +</code>
 +
 +셀 내부 정렬
 +
 +<code cpp>
 +| Right | Center | Left  |
 +| ----: | :----: | :---- |
 +| 10    | 10     | 10    |
 +| 1000  | 1000   | 1000  |
 +</code>
 +====== DoxyWizard ======
 +
 +직접 doxygen을 쓰는 것보다는 doxywizard로 옵션을 수정하는게 덜 피곤한 것 같다.
 +
 +===== PRE.PROCESSOR =====
 +
 +프로그램 메뉴 상의 위치 Expert > Preprocessor ( [[http://www.doxygen.nl/manual/preprocessing.html|독시젠 PreProcessing 부분]])
 +
 +**ENABLE_PREPROCESSING** 옵션을 켜야, PreProcessor를 인식하는데 **이 지시문 때문에 파일 전체가 문서화 되지 않을 수도 있어서 주의가 필요**
 +
 +  * ENABLE_PREPORCESSING : check! 적용하고 싶다면,
 +
 +%%#if some_define%%과 같이 Preprocessor를 사용했는데 문서화가 되지 않는다면
 +
 +  * **PREDEFINED** 섹션에 사용하려는 지시문을 (적당히) 넣는다.
 +  * 더 나이스한 방법은 모르겠고, 일단 이 방법으로 문서화가 된다.
 +
 +===== Unity3D (C#)를 위한 설정 =====
 +
 +++++ Doxygen Config 펼치기 |
 +<file txt doxygenConfigSample.txt>
 +# Doxyfile 1.8.5
 +
 +#---------------------------------------------------------------------------
 +# Project related configuration options
 +#---------------------------------------------------------------------------
 +DOXYFILE_ENCODING      = UTF-8
 +PROJECT_NAME           = "One Two BOOM"
 +PROJECT_NUMBER         
 +PROJECT_BRIEF          = 
 +PROJECT_LOGO           
 +OUTPUT_DIRECTORY       = ../doxygen
 +CREATE_SUBDIRS         = NO
 +OUTPUT_LANGUAGE        = Korean-en
 +BRIEF_MEMBER_DESC      = YES
 +REPEAT_BRIEF           = YES
 +ABBREVIATE_BRIEF       = "The $name class" \
 +                         "The $name widget" \
 +                         "The $name file" \
 +                         is \
 +                         provides \
 +                         specifies \
 +                         contains \
 +                         represents \
 +                         a \
 +                         an \
 +                         the
 +ALWAYS_DETAILED_SEC    = YES
 +INLINE_INHERITED_MEMB  = NO
 +FULL_PATH_NAMES        = YES
 +STRIP_FROM_PATH        = 
 +STRIP_FROM_INC_PATH    = 
 +SHORT_NAMES            = NO
 +JAVADOC_AUTOBRIEF      = NO
 +QT_AUTOBRIEF           = NO
 +MULTILINE_CPP_IS_BRIEF = YES
 +INHERIT_DOCS           = YES
 +SEPARATE_MEMBER_PAGES  = NO
 +TAB_SIZE               = 4
 +ALIASES                = 
 +TCL_SUBST              = 
 +OPTIMIZE_OUTPUT_FOR_C  = NO
 +OPTIMIZE_OUTPUT_JAVA   = NO
 +OPTIMIZE_FOR_FORTRAN   = NO
 +OPTIMIZE_OUTPUT_VHDL   = NO
 +EXTENSION_MAPPING      = 
 +MARKDOWN_SUPPORT       = YES
 +AUTOLINK_SUPPORT       = YES
 +BUILTIN_STL_SUPPORT    = NO
 +CPP_CLI_SUPPORT        = NO
 +SIP_SUPPORT            = NO
 +IDL_PROPERTY_SUPPORT   = YES
 +DISTRIBUTE_GROUP_DOC   = YES
 +SUBGROUPING            = YES
 +INLINE_GROUPED_CLASSES = YES
 +INLINE_SIMPLE_STRUCTS  = YES
 +TYPEDEF_HIDES_STRUCT   = NO
 +LOOKUP_CACHE_SIZE      = 0
 +#---------------------------------------------------------------------------
 +# Build related configuration options
 +#---------------------------------------------------------------------------
 +EXTRACT_ALL            = YES
 +EXTRACT_PRIVATE        = YES
 +EXTRACT_PACKAGE        = YES
 +EXTRACT_STATIC         = YES
 +EXTRACT_LOCAL_CLASSES  = YES
 +EXTRACT_LOCAL_METHODS  = YES
 +EXTRACT_ANON_NSPACES   = YES
 +HIDE_UNDOC_MEMBERS     = NO
 +HIDE_UNDOC_CLASSES     = NO
 +HIDE_FRIEND_COMPOUNDS  = NO
 +HIDE_IN_BODY_DOCS      = NO
 +INTERNAL_DOCS          = YES
 +CASE_SENSE_NAMES       = NO
 +HIDE_SCOPE_NAMES       = NO
 +SHOW_INCLUDE_FILES     = YES
 +FORCE_LOCAL_INCLUDES   = NO
 +INLINE_INFO            = YES
 +SORT_MEMBER_DOCS       = YES
 +SORT_BRIEF_DOCS        = NO
 +SORT_MEMBERS_CTORS_1ST = NO
 +SORT_GROUP_NAMES       = NO
 +SORT_BY_SCOPE_NAME     = NO
 +STRICT_PROTO_MATCHING  = NO
 +GENERATE_TODOLIST      = YES
 +GENERATE_TESTLIST      = YES
 +GENERATE_BUGLIST       = YES
 +GENERATE_DEPRECATEDLIST= YES
 +ENABLED_SECTIONS       
 +MAX_INITIALIZER_LINES  = 30
 +SHOW_USED_FILES        = YES
 +SHOW_FILES             = YES
 +SHOW_NAMESPACES        = YES
 +FILE_VERSION_FILTER    = 
 +LAYOUT_FILE            = 
 +CITE_BIB_FILES         
 +#---------------------------------------------------------------------------
 +# Configuration options related to warning and progress messages
 +#---------------------------------------------------------------------------
 +QUIET                  = NO
 +WARNINGS               = YES
 +WARN_IF_UNDOCUMENTED   = YES
 +WARN_IF_DOC_ERROR      = YES
 +WARN_NO_PARAMDOC       = NO
 +WARN_FORMAT            = "$file:$line: $text"
 +WARN_LOGFILE           
 +#---------------------------------------------------------------------------
 +# Configuration options related to the input files
 +#---------------------------------------------------------------------------
 +INPUT                  = Assets/AppOTBoom \
 +                         Assets/KIHelper
 +INPUT_ENCODING         = UTF-8
 +FILE_PATTERNS          = *.c \
 +                         *.cc \
 +                         *.cxx \
 +                         *.cpp \
 +                         *.c++ \
 +                         *.d \
 +                         *.java \
 +                         *.ii \
 +                         *.ixx \
 +                         *.ipp \
 +                         *.i++ \
 +                         *.inl \
 +                         *.h \
 +                         *.hh \
 +                         *.hxx \
 +                         *.hpp \
 +                         *.h++ \
 +                         *.idl \
 +                         *.odl \
 +                         *.cs \
 +                         *.php \
 +                         *.php3 \
 +                         *.inc \
 +                         *.m \
 +                         *.markdown \
 +                         *.md \
 +                         *.mm \
 +                         *.dox \
 +                         *.py \
 +                         *.f90 \
 +                         *.f \
 +                         *.for \
 +                         *.vhd \
 +                         *.vhdl \
 +                         *.b \
 +                         *.cs
 +RECURSIVE              = YES
 +EXCLUDE                = 
 +EXCLUDE_SYMLINKS       = NO
 +EXCLUDE_PATTERNS       
 +EXCLUDE_SYMBOLS        = 
 +EXAMPLE_PATH           = .
 +EXAMPLE_PATTERNS       = *
 +EXAMPLE_RECURSIVE      = NO
 +IMAGE_PATH             
 +INPUT_FILTER           
 +FILTER_PATTERNS        = 
 +FILTER_SOURCE_FILES    = NO
 +FILTER_SOURCE_PATTERNS = 
 +USE_MDFILE_AS_MAINPAGE = 
 +#---------------------------------------------------------------------------
 +# Configuration options related to source browsing
 +#---------------------------------------------------------------------------
 +SOURCE_BROWSER         = NO
 +INLINE_SOURCES         = NO
 +STRIP_CODE_COMMENTS    = YES
 +REFERENCED_BY_RELATION = NO
 +REFERENCES_RELATION    = YES
 +REFERENCES_LINK_SOURCE = YES
 +SOURCE_TOOLTIPS        = YES
 +USE_HTAGS              = NO
 +VERBATIM_HEADERS       = YES
 +CLANG_ASSISTED_PARSING = NO
 +CLANG_OPTIONS          = 
 +#---------------------------------------------------------------------------
 +# Configuration options related to the alphabetical class index
 +#---------------------------------------------------------------------------
 +ALPHABETICAL_INDEX     = YES
 +COLS_IN_ALPHA_INDEX    = 5
 +IGNORE_PREFIX          = 
 +#---------------------------------------------------------------------------
 +# Configuration options related to the HTML output
 +#---------------------------------------------------------------------------
 +GENERATE_HTML          = YES
 +HTML_OUTPUT            = html
 +HTML_FILE_EXTENSION    = .html
 +HTML_HEADER            = 
 +HTML_FOOTER            = 
 +HTML_STYLESHEET        = 
 +HTML_EXTRA_STYLESHEET 
 +HTML_EXTRA_FILES       
 +HTML_COLORSTYLE_HUE    = 220
 +HTML_COLORSTYLE_SAT    = 100
 +HTML_COLORSTYLE_GAMMA  = 80
 +HTML_TIMESTAMP         = YES
 +HTML_DYNAMIC_SECTIONS  = NO
 +HTML_INDEX_NUM_ENTRIES = 100
 +GENERATE_DOCSET        = NO
 +DOCSET_FEEDNAME        = "Doxygen generated docs"
 +DOCSET_BUNDLE_ID       = org.doxygen.Project
 +DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
 +DOCSET_PUBLISHER_NAME  = Publisher
 +GENERATE_HTMLHELP      = NO
 +CHM_FILE               
 +HHC_LOCATION           
 +GENERATE_CHI           = NO
 +CHM_INDEX_ENCODING     
 +BINARY_TOC             = NO
 +TOC_EXPAND             = NO
 +GENERATE_QHP           = NO
 +QCH_FILE               
 +QHP_NAMESPACE          = org.doxygen.Project
 +QHP_VIRTUAL_FOLDER     = doc
 +QHP_CUST_FILTER_NAME   
 +QHP_CUST_FILTER_ATTRS 
 +QHP_SECT_FILTER_ATTRS 
 +QHG_LOCATION           
 +GENERATE_ECLIPSEHELP   = NO
 +ECLIPSE_DOC_ID         = org.doxygen.Project
 +DISABLE_INDEX          = NO
 +GENERATE_TREEVIEW      = NO
 +ENUM_VALUES_PER_LINE   = 4
 +TREEVIEW_WIDTH         = 250
 +EXT_LINKS_IN_WINDOW    = NO
 +FORMULA_FONTSIZE       = 10
 +FORMULA_TRANSPARENT    = YES
 +USE_MATHJAX            = NO
 +MATHJAX_FORMAT         = HTML-CSS
 +MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
 +MATHJAX_EXTENSIONS     
 +MATHJAX_CODEFILE       
 +SEARCHENGINE           = YES
 +SERVER_BASED_SEARCH    = NO
 +EXTERNAL_SEARCH        = NO
 +SEARCHENGINE_URL       
 +SEARCHDATA_FILE        = searchdata.xml
 +EXTERNAL_SEARCH_ID     
 +EXTRA_SEARCH_MAPPINGS 
 +#---------------------------------------------------------------------------
 +# Configuration options related to the LaTeX output
 +#---------------------------------------------------------------------------
 +GENERATE_LATEX         = NO
 +LATEX_OUTPUT           = latex
 +LATEX_CMD_NAME         = latex
 +MAKEINDEX_CMD_NAME     = makeindex
 +COMPACT_LATEX          = NO
 +PAPER_TYPE             = a4
 +EXTRA_PACKAGES         
 +LATEX_HEADER           
 +LATEX_FOOTER           
 +LATEX_EXTRA_FILES      = 
 +PDF_HYPERLINKS         = YES
 +USE_PDFLATEX           = YES
 +LATEX_BATCHMODE        = NO
 +LATEX_HIDE_INDICES     = NO
 +LATEX_SOURCE_CODE      = NO
 +LATEX_BIB_STYLE        = plain
 +#---------------------------------------------------------------------------
 +# Configuration options related to the RTF output
 +#---------------------------------------------------------------------------
 +GENERATE_RTF           = NO
 +RTF_OUTPUT             = rtf
 +COMPACT_RTF            = NO
 +RTF_HYPERLINKS         = NO
 +RTF_STYLESHEET_FILE    = 
 +RTF_EXTENSIONS_FILE    = 
 +#---------------------------------------------------------------------------
 +# Configuration options related to the man page output
 +#---------------------------------------------------------------------------
 +GENERATE_MAN           = NO
 +MAN_OUTPUT             = man
 +MAN_EXTENSION          = .3
 +MAN_LINKS              = NO
 +#---------------------------------------------------------------------------
 +# Configuration options related to the XML output
 +#---------------------------------------------------------------------------
 +GENERATE_XML           = NO
 +XML_OUTPUT             = xml
 +XML_SCHEMA             
 +XML_DTD                = 
 +XML_PROGRAMLISTING     = YES
 +#---------------------------------------------------------------------------
 +# Configuration options related to the DOCBOOK output
 +#---------------------------------------------------------------------------
 +GENERATE_DOCBOOK       = NO
 +DOCBOOK_OUTPUT         = docbook
 +#---------------------------------------------------------------------------
 +# Configuration options for the AutoGen Definitions output
 +#---------------------------------------------------------------------------
 +GENERATE_AUTOGEN_DEF   = NO
 +#---------------------------------------------------------------------------
 +# Configuration options related to the Perl module output
 +#---------------------------------------------------------------------------
 +GENERATE_PERLMOD       = NO
 +PERLMOD_LATEX          = NO
 +PERLMOD_PRETTY         = YES
 +PERLMOD_MAKEVAR_PREFIX = 
 +#---------------------------------------------------------------------------
 +# Configuration options related to the preprocessor
 +#---------------------------------------------------------------------------
 +ENABLE_PREPROCESSING   = YES
 +MACRO_EXPANSION        = NO
 +EXPAND_ONLY_PREDEF     = YES
 +SEARCH_INCLUDES        = YES
 +INCLUDE_PATH           
 +INCLUDE_FILE_PATTERNS 
 +PREDEFINED             = UNITY_EDITOR
 +EXPAND_AS_DEFINED      = 
 +SKIP_FUNCTION_MACROS   = YES
 +#---------------------------------------------------------------------------
 +# Configuration options related to external references
 +#---------------------------------------------------------------------------
 +TAGFILES               
 +GENERATE_TAGFILE       
 +ALLEXTERNALS           = NO
 +EXTERNAL_GROUPS        = YES
 +EXTERNAL_PAGES         = YES
 +PERL_PATH              = /usr/bin/perl
 +#---------------------------------------------------------------------------
 +# Configuration options related to the dot tool
 +#---------------------------------------------------------------------------
 +CLASS_DIAGRAMS         = YES
 +MSCGEN_PATH            = 
 +HIDE_UNDOC_RELATIONS   = YES
 +HAVE_DOT               = YES
 +DOT_NUM_THREADS        = 0
 +DOT_FONTNAME           = Helvetica
 +DOT_FONTSIZE           = 10
 +DOT_FONTPATH           
 +CLASS_GRAPH            = YES
 +COLLABORATION_GRAPH    = YES
 +GROUP_GRAPHS           = YES
 +UML_LOOK               = NO
 +UML_LIMIT_NUM_FIELDS   = 10
 +TEMPLATE_RELATIONS     = NO
 +INCLUDE_GRAPH          = YES
 +INCLUDED_BY_GRAPH      = YES
 +CALL_GRAPH             = YES
 +CALLER_GRAPH           = YES
 +GRAPHICAL_HIERARCHY    = YES
 +DIRECTORY_GRAPH        = YES
 +DOT_IMAGE_FORMAT       = png
 +INTERACTIVE_SVG        = NO
 +DOT_PATH               
 +DOTFILE_DIRS           
 +MSCFILE_DIRS           
 +DOT_GRAPH_MAX_NODES    = 50
 +MAX_DOT_GRAPH_DEPTH    = 0
 +DOT_TRANSPARENT        = NO
 +DOT_MULTI_TARGETS      = NO
 +GENERATE_LEGEND        = YES
 +DOT_CLEANUP            = YES
 +</file>
 +++++
 +
 +===== 그래프 표시 : Graphviz =====
 +
 +  * 다운로드링크 : http://www.graphviz.org/download/
 +
 +윈도우라면 설치 버젼이 제공되므로, 뭐 걍 설치하면 끝.
 +====== 키워드 (c comment style) =====
 +
 +주석은 javadoc 스타일로 작성해도 인식 하므로, 일단 패스
 +doxygen이 인식하는 키워드 정리 ; 인터넷에 널려 있다.
 +  * 간단하게는 %%///%%이게 제일 편할 듯
 +  * 복수의 키워드를 사용하려면 /*! ~ */ 와 같은 것을 쓴다.
 +
 +<code>
 +/*!
 + * @brief 설명, 
 + * @brief  (공백)여러줄 작성시에는 공백을 추가해서 적는다. 불편하네..
 + * @file 파일명 
 + * @return 
 + * @author
 + * @date 작성날짜
 + * @param 파라미터
 + * @see 참고할 함수나 페이지
 + * @todo 다음에 할일
 + * @bug 
 + * @code 코드로 쓰는 설명 부분 시작
 + * @code 코드 부분 종료
 + */
 +</code>
 +
 +====== 독시젠 웹 레퍼런스 ======
 +
 +  * [[http://www.doxygen.nl/manual/docblocks.html|코드의 주석 문서화]]
 +  * [[http://www.doxygen.nl/manual/commands.html|독시젠의 키워드]] : !!
 +  * [[http://www.doxygen.nl/manual/markdown.html|독시젠의 Markdown 문서화 기능]] 
 +
 +  제대로 사용하려면 가기 싫어도 자주 가게 되는데...
 +
 +====== MS XML Documentation Comment ======
 +
 +C#으로 작성할때는 MS 스타일이 자동 입력 되니, 사용할 수 있는 것을 정리한다. 귀찮지만, 한번 정리해보자.
 +
 +<note>Doxygen도 MS 형식의 문서화를 지원하니까, 이쪽을 써도 안심</note>
 +
 +  * MS는 xml 형식으로 주석 문서화가 가능하다.
 +  * %%///%% 로 시작되는 부분이 문서화가 되어지는 부분.<code>///</code>
 +  * %%<키워드>%% ~ %%</키워드>%% : 의 형식으로 문서화 가능.<code>
 +/// <summary> 함수에 대한 설명
 +/// </summary></code>
 +  * 이 **%%<summary></summary>%%** 키워드는 한줄에 다 같이 사용 되면 인식 되지 않는다.<code>
 +/// <summary> 주석 </summary> <-- 이렇게 쓰면 인식되지 않아요.
 +</code>
 +
 +
 +%%<키워드>%% 내부에 %%<, >%%를 써야 하는 경우에는 html 처럼 **%%&lt;%%**와 **%%&gt;%%**를 사용한다.
 +
 +
 +<code>
 +/// <summary cref="C &lt; T &gt;">
 +/// </summary>
 +</code>
 +
 +=====주석 혼합 사용=====
 +
 +<note>MS xml 태그로 주석을 추가한 다음, DoxyGen 형식으로 부족한 부분을 추가해도 인식 된다. </note>
 +
 +<code>
 +/// <summary>
 +/// 새게임을 시작한다.
 +/// AppFlowHandler 에서 호출 되어서 게임을 시작된다. 보드를 초기화 하고,
 +/// 뷰에 메시지를 보낸다.
 +/// </summary>
 +/// <param name="startParam">시작할 때 필요한 정수 옵션을 받아둔다.</param>
 +/*!
 + * @param secParam 두번째 파라미터에 대해서 입력한다.
 + */
 +</code>
 +
 +=====링크=====
 +
 +  * [[http://msdn.microsoft.com/ko-kr/library/5ast78ax.aspx|한글링크]]
 +  * [[http://msdn.microsoft.com/en-us/library/5ast78ax.aspx|영문(최신)]]
 +  * [[https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/xmldoc/|XML 문서 주석(C# 프로그래밍 가이드)]]
 +===== 키워드 =====
 +
 +작성하다보면 자동으로 사용할 키워드를 보여주기 때문에 일단은 필요 없지만.. 그래도 정리해두는 편이 찾기 편할 테니.
 +
 +  * [[http://msdn.microsoft.com/en-us/library/5ast78ax.aspx|Recommended Tags for Documentation Comments]]
 +
 +| %%<c>%%            | 코드를 가리킨다. 한줄 이상은 %%<code>%%를 사용한다.                                                   |
 +| %%<code>%%         | 한줄 이상의 코드                                                                                      |
 +| cref               | **코드레퍼런스**를 가리킨다. %%<see cref="TestClass"/>%% 처럼 사용.                                   |
 +| %%<para>%%         | %%<summary>, <remarks>%% 또는 %%<returns>%% 같은 태그 내에서 사용하여 텍스트에 구문을 추가할 수 있다. |
 +| :::                | 단락을 추가할때는 이 태그를 써야 한다는 귀찮은 태그다.                                                |
 +| %%<see>%%          | cref와 같이 사용해서, 어덴가의 코드를 가리킨다.                                                       |
 +| %%<param>%%        | 말그대로 파라미터                                                                                     |
 +| %%<seealso>%%      | 문서화하려는 대상 파일들에 있는 멤버 함수, 멤버 변수와 같은 필드에 대한 참조를 만든다.                |
 +|                    | 출력 XML에서 member를 요소 이름에 전달하는지 확인합니다. member는 큰따옴표(" ")로 묶어야 합니다.      |
 +|                    | 텍스트 내부에서 링크를 지정하려면 %%<see>%%를 사용합니다. <-- 무슨뜻?                                 |
 +| %%<see>%%          | %%<seealso>%%와 같은데 뭐가 다르지?                                                                   |
 +| %%<example>%%      | [[http://msdn.microsoft.com/ko-kr/library/9w4cf933.aspx|링크]]                                        |
 +| %%<paramref>%%                                                                                                           |
 +| %%<summary>%%      | 함수에 대한 설명                                                                                      |
 +| %%<exception>%%    | 예외 처리에 대해서 기록. [[http://msdn.microsoft.com/en-us/library/w1htk11d.aspx|link]]               |
 +| %%<permission>%%                                                                                                         |
 +| %%<typeparam>%%    |                                                                                                       |
 +| %%<include>%%      | 함수 설명이 다른 파일에 있는 경우, 이 지시문으로 해당 파일을 기록한다.                                |
 +| %%<remarks>%%      | [[http://msdn.microsoft.com/ko-kr/library/3zw4z1ys.aspx|링크]]                                        |
 +|                    | %%<summary>%%에 대한 보충설명을 추가한다. 아마 표시하는 위치가 다른 모양.                             |
 +| %%<typeparamref>%% | [[http://msdn.microsoft.com/en-us/library/ms173192.aspx|링크]]                                        |
 +| %%<list>%%         | 아래쪽 참조                                                                                           |
 +| %%<returns>%%      | 함수 리턴 값에 대해서 추가 설명                                                                       |
 +| %%<value>%%        | 좀 이상하지만, get/set으로 설정하는 프로퍼티에 대해서 주석을 넣는다.                                  |
 +
 +===== <list>에 대한 예제 =====
 +
 +<code xml>
 +<list type="bullet" | "number" | "table">
 +    <listheader>
 +        <term>term</term>
 +        <description>description</description>
 +    </listheader>
 +    <item>
 +        <term>term</term>
 +        <description>description</description>
 +    </item>
 +</list>
 +</code>
 +
 +====== TAG ======
 +
 +{{tag> doxygen 독시젠}}
 +
 +====== 덧글 피드백 ======
 +~~DISQUS kieuns~~