tool:doxygen
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| tool:doxygen [2020/02/21 12:54] – kieuns | tool:doxygen [2024/04/23 22:43] (현재) – 바깥 편집 127.0.0.1 | ||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| + | ~~Title: 독시젠 A to Z~~ | ||
| + | 독시젠을 사용해서 코드에 문서를 남기는 방법을 정리한다. | ||
| + | |||
| + | 잘 활용해서 문서 작성 압박에서 조금이라도 벗어나보자. | ||
| + | |||
| + | {{htmlmetatags> | ||
| + | metatag-keywords=(독시젠, | ||
| + | metatag-description=(독시젠 사용법) | ||
| + | }} | ||
| + | |||
| + | ====== 독시젠 기본 매뉴얼 ====== | ||
| + | |||
| + | * 독시젠 매뉴얼 링크 : http:// | ||
| + | * 하단의 링크가 깨진 경우, 위 주소에서 다시 찾아보면 나옴 | ||
| + | |||
| + | ===== 독시젠 사용한 샘플 ===== | ||
| + | |||
| + | * cpp 또는 유사 언어 (php)에서 써 먹을 수 있는 doxygen 실용 예제. 쓰려는데 막히면 이걸 보면 오케. 내가 아는 범위까지만 작성 되어 있다. | ||
| + | * {{: | ||
| + | * [[http:// | ||
| + | |||
| + | ===== doxygen 주석 방식 ===== | ||
| + | |||
| + | ==== 주석 형식의 기본 ==== | ||
| + | |||
| + | 내 손에 가장 익은 방식 | ||
| + | |||
| + | < | ||
| + | /// | ||
| + | /// 위의 키워드에 대한 이어지는 설명 | ||
| + | |||
| + | 또는, 여러 키워드를 입력해야 하는데 /// 를 타이핑 하기 귀찮은 경우 | ||
| + | |||
| + | /*! | ||
| + | \독시젠키워드 | ||
| + | */ | ||
| + | |||
| + | 또는, | ||
| + | |||
| + | /*! | ||
| + | @독시젠키워드 | ||
| + | */ | ||
| + | </ | ||
| + | |||
| + | %%@%%로 시작되는 독시젠 키워드는 phpdoc에서 인식하므로 (다른 것도 인식하지만), | ||
| + | |||
| + | 이후에는 전부 @나 \를 사용해서 작성한다. | ||
| + | |||
| + | 독시젠 키워드가 선언된 이후부터는 | ||
| + | * 다음 독시젠 키워드가 나올때 까지 | ||
| + | * 주석이 끝나는 완전히 전부 부분까지 | ||
| + | 이전에 선언된 독시젠 키워드에 해당 되는 설명으로 읽혀진다. | ||
| + | |||
| + | < | ||
| + | /*! | ||
| + | * @breif | ||
| + | * 여기부터는 ' | ||
| + | * 줄을 끊어서 쓰더라도 한줄로 정리 된다. | ||
| + | * @return 새로온 독시젠 키워드가 나왔으므로 이전 brief에 대한 읽기는 끝나게 되고 | ||
| + | * return에 해당되는 주석으로 읽혀진다. | ||
| + | */ | ||
| + | </ | ||
| + | |||
| + | ===== Class에 대해서 ===== | ||
| + | |||
| + | <code cpp> | ||
| + | ///@brief 아래 클래스에 대한 설명 | ||
| + | class TestClass | ||
| + | { | ||
| + | public: | ||
| + | LONGLONG | ||
| + | int | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | * **클래스 위에 적는 경우라면 이 키워드는 필요 없다.** | ||
| + | * 변수에 대해서 설명을 추가할 때는, %%///<%% 를 그대로 사용해야 변수 주석으로 인식한다. | ||
| + | |||
| + | <code cpp> | ||
| + | ///\class AbcdClass filename.h " | ||
| + | ///\brief 뭐 소스 위에 적지 않는 경우 쓰는거지. | ||
| + | </ | ||
| + | |||
| + | * \class 키워드는 클래스 위에 적지 않고 다른 위치에 적는 경우, 무엇을 위한 키워드인지 알려주기 위해서 적는다. | ||
| + | |||
| + | class, file, 함수에 대해서, | ||
| + | |||
| + | 각각의 소스 바로 위에 쓰지 않고 다른 곳에 쓸 수도 있는데, **주석이 너무 많아져서 코드 보는 것이 힘들어지는 경우** 주석 부분만 다른 곳으로 옮겨 독시젠 문서에 포함되게끔 할 수 있는 <color silver>< | ||
| + | |||
| + | ==== 멤버 변수에 주석 달기 ==== | ||
| + | |||
| + | <code cpp> | ||
| + | class IamTheClass | ||
| + | { | ||
| + | int k; ///< 이건 멤버 변수야. 로컬 변수의 주석은 무시당한다. | ||
| + | void int kkk() | ||
| + | { | ||
| + | int mm; ///< mm 이라는 로컬 변수야. 독시젠이 난 무시할거야. | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== 기타 ==== | ||
| + | |||
| + | < | ||
| + | ///\brief RootThree를 위해서 사용될 콜백 함수 | ||
| + | typedef bool (__stdcall *CALLBACKFUNCTYPE)(IN RootThree*, IN void*); | ||
| + | </ | ||
| + | |||
| + | ==== 함수를 위한 키워드 ==== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | 함수용 키워드들 | ||
| + | |||
| + | <code cpp> | ||
| + | /*! | ||
| + | * @brief | ||
| + | * @details | ||
| + | * @param[in] 파라미터 이름 파라미터 설명, [in]은 입력용 파라미터라는 뜻. | ||
| + | * @param[out] 파라미터 이름 파라미터 설명, [out]은 입력용 파라미터라는 뜻. | ||
| + | * @return 리턴값에 대한 설명, 리턴 값이 여럿이라 추가 설명이 필요하면 retval을 사용한다. ' | ||
| + | * @retval 리턴값 리턴 값에 대한 설명. | ||
| + | * @bug 알고 있는 버그에 대해서 적는다. | ||
| + | * @todo todo에 대해서 적는다. | ||
| + | * @warning 주의 사항에 대해서 적는다. | ||
| + | * @see ' | ||
| + | */ | ||
| + | </ | ||
| + | |||
| + | <code cpp> | ||
| + | // 독시젠에서 확인한 예제 | ||
| + | /*! | ||
| + | * @brief 독시젠에서 함수 설명이 제대로 만들어지는지 확인하기 위한 함수. | ||
| + | * @details ' | ||
| + | * @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 ); | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== 기타 ===== | ||
| + | |||
| + | ?? <color silver>< | ||
| + | |||
| + | < | ||
| + | ///@brief RootThree를 위해서 사용될 콜백 함수 | ||
| + | typedef bool (__stdcall *CALLBACKFUNCTYPE)(IN RootThree*, IN void*); | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== 예제 1 ===== | ||
| + | |||
| + | * 설명을 작성하기 전에 코드 예제 | ||
| + | * 샘플 파일 (독시젠 설정 파일 포함) : 문서 맨 위에 있음. | ||
| + | |||
| + | 코드에 설명용 주석이 많기 때문에 부담스러워 보이지만, | ||
| + | |||
| + | 아래의 예시 코드는, 아래 문서를 만들기 위한 주석 달기임 | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | <code cpp> | ||
| + | /*! | ||
| + | * @file CppTest.cpp | ||
| + | * C++ 문법과 DoxyGen 문법을 테스트하기 위한 코드 | ||
| + | */ | ||
| + | #include " | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | 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 | ||
| + | /// | ||
| + | /// Leading text. | ||
| + | ///@section sec An example section | ||
| + | /// This page contains the subsections \ref subsection1 and \ref subsection2. | ||
| + | /// For more info see page \ref page2. | ||
| + | /// | ||
| + | /// Text. | ||
| + | /// | ||
| + | /// More text. | ||
| + | |||
| + | /// | ||
| + | /// | ||
| + | /// | ||
| + | /// | ||
| + | /// | ||
| + | /// | ||
| + | /// | ||
| + | /// | ||
| + | |||
| + | //////////////////////////////////////////////////////////////////////////// | ||
| + | |||
| + | /*! | ||
| + | * @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 기능 확인용 테스트 함수. | ||
| + | /// 부모 클래스의 같은 함수를 실행하고 그 뒤에 함수 이름을 출력하고 종료한다. | ||
| + | /// | ||
| + | virtual bool initHandler() | ||
| + | { | ||
| + | if( ! __super:: | ||
| + | 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:: | ||
| + | cout << __FUNCTION__ << endl; | ||
| + | return true; | ||
| + | } | ||
| + | |||
| + | ///@ingroup OUT_GRP_TEST | ||
| + | int Grp1() {} | ||
| + | int Grp2() {} | ||
| + | |||
| + | /// | ||
| + | ///@{ | ||
| + | void Grp3() {} | ||
| + | void Grp4() {} | ||
| + | ///@} | ||
| + | |||
| + | int mnABC; ///< abc int 변수 | ||
| + | int mnDEF; ///< a var in group OUT_GRP_TEST | ||
| + | |||
| + | ///@brief 독시젠에서 함수 설명이 제대로 만들어지는지 확인하기 위한 함수. | ||
| + | ///@details ' | ||
| + | /// | ||
| + | /// | ||
| + | /// | ||
| + | ///@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 ' | ||
| + | * @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, ' | ||
| + | */ | ||
| + | int DoxyFuncTest2( int aa, char bb, char* dd ); | ||
| + | }; | ||
| + | |||
| + | |||
| + | //////////////////////////////////////////////////////////////////////////// | ||
| + | |||
| + | ///\brief Root계열 클래스를 생성한다. 그리고 리턴. | ||
| + | ///\return RootZero* 타입으로 생성된 포인터를 리턴한다. | ||
| + | RootZero* getRootClassPtr() | ||
| + | { | ||
| + | return new RootThree; | ||
| + | } | ||
| + | |||
| + | ///@brief 프로그램 시작 지점 | ||
| + | /// | ||
| + | /// | ||
| + | ///@return 프로그램의 실행 결과값. | ||
| + | ///@warning 워닝 경고문 테스트 | ||
| + | ///@ingroup GLOBAL_FUNC | ||
| + | int _tmain(int argc, _TCHAR* argv[]) | ||
| + | { | ||
| + | RootZero* _ptr = getRootClassPtr(); | ||
| + | _ptr-> | ||
| + | | ||
| + | _getch(); | ||
| + | | ||
| + | delete _ptr; | ||
| + | | ||
| + | _getch(); | ||
| + | | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== 예제 2 ===== | ||
| + | |||
| + | ==== 예제코드 ==== | ||
| + | |||
| + | doxygen 키워드와 ms-xml로 작성된 클래스 설명 부분. | ||
| + | |||
| + | 여러가지 재미 있는 키워드가 활용 되었다. [[# | ||
| + | |||
| + | <code csharp> | ||
| + | /// < | ||
| + | /// 로그를 출력할 윈도우를 만든다.< | ||
| + | /// log() 와 watchValue() 를 실행할때 init() 함수를 호출해서 로그 파일과 GameObject 를 만든다. | ||
| + | /// </ | ||
| + | /// | ||
| + | /// < | ||
| + | /// 스태틱 객체가 아니므로, | ||
| + | /// 그 후에는 static으로 정의된 몇 함수를 사용해서 로그를 남기면 된다. | ||
| + | /// | ||
| + | /// @code{.cs} | ||
| + | /// Console.log( " | ||
| + | /// Console.debug( " | ||
| + | /// @endcode | ||
| + | /// | ||
| + | /// 이외에도 변수 와치 기능을 사용해서, | ||
| + | /// 값이 추가되는대로 자동으로 늘어나서 표시된다. | ||
| + | /// | ||
| + | /// @code{.cs} | ||
| + | /// Console.watchValue( " | ||
| + | /// @endcode | ||
| + | /// </ | ||
| + | /// | ||
| + | /// < | ||
| + | /// < | ||
| + | /// | ||
| + | /// <list type=" | ||
| + | /// < | ||
| + | /// GUI 스크립트 가이드 : http:// | ||
| + | /// </ | ||
| + | /// < | ||
| + | /// GUI 레이아웃모드 : http:// | ||
| + | /// </ | ||
| + | /// </ | ||
| + | /// | ||
| + | /// < | ||
| + | /// <list type=" | ||
| + | /// < | ||
| + | /// GUILayout : http:// | ||
| + | /// </ | ||
| + | /// < | ||
| + | /// GUILayout.Window() : http:// | ||
| + | /// </ | ||
| + | /// < | ||
| + | /// GUILayout.Box() : http:// | ||
| + | /// </ | ||
| + | /// < | ||
| + | /// GUILayout.BeginScrollView() : http:// | ||
| + | /// </ | ||
| + | /// < | ||
| + | /// GUI Controls : http:// | ||
| + | /// </ | ||
| + | /// </ | ||
| + | /// </ | ||
| + | /// @todo 텍스트 입력필드도 넣어서 입력을 받아서 대응 되도록 하는 것. | ||
| + | public class Console : MonoBehaviour | ||
| + | { | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== 만들어진 샘플 ==== | ||
| + | |||
| + | [[# | ||
| + | |||
| + | ^ 위의 주석의 샘플 | ||
| + | | {{: | ||
| + | ===== 기타 ===== | ||
| + | |||
| + | * [[language: | ||
| + | |||
| + | ====== Page 와 Section ====== | ||
| + | |||
| + | * Page 를 만들고 다른 페이지와 연결 되도록 링크 구성 | ||
| + | * 각 페이지는 섹션과 서브 섹션으로 구성 | ||
| + | * 최종 tableofcontents 키워드로 최종 챕터 정리 가능 | ||
| + | |||
| + | * 아래 Markdown 과 함께 사용 되어, 코드 문서화이외의 문서 작업이 가능< | ||
| + | |||
| + | 갈수록 링크가 늘어나는 독시젠 문서화 설명 : [[http:// | ||
| + | |||
| + | ===== PAGE, SUBPAGE ===== | ||
| + | |||
| + | * **mainpage** : 최초로 보여지는 페이지 설정 | ||
| + | * **subpage** : 이동할 다른 페이지의 링크 설정 | ||
| + | |||
| + | <code cpp> | ||
| + | // 아래 내용이 모두 한 파일에 있어도, 각 다른 페이지를 만들어준다. | ||
| + | |||
| + | /*! | ||
| + | @mainpage I am THE Main | ||
| + | |||
| + | 이 문서의 다른 페이지에 대해서 | ||
| + | - @subpage intro | ||
| + | - @subpage advanced | ||
| + | */ | ||
| + | |||
| + | /*! | ||
| + | @page intro 일반사용 | ||
| + | 일반 사용에 대한 문서 | ||
| + | */ | ||
| + | |||
| + | /*! | ||
| + | @page advanced " | ||
| + | 일반 사용에 대한 문서 | ||
| + | */ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Section, SubSection ===== | ||
| + | |||
| + | 이런 관계인 것은 알겠는데 | ||
| + | |||
| + | * Section | ||
| + | * subsection | ||
| + | * subsection | ||
| + | |||
| + | %%#, ##, ##%%로 사용되는 헤더1, 헤더2, 헤더3 같은거랑 무슨 차이가 나는지 잘 모름. | ||
| + | |||
| + | <color red> | ||
| + | |||
| + | * %%@section < | ||
| + | * %%@subsection < | ||
| + | |||
| + | <code cpp> | ||
| + | /*! | ||
| + | @section first_section 첫번째 섹션 | ||
| + | 첫번째 섹션 내용 | ||
| + | |||
| + | @subsection first_sec_sec1 첫 섹션의 서브 섹션 | ||
| + | 첫번째 서브 섹션 | ||
| + | |||
| + | @subsection first_sec_sec2 첫 섹션의 두번째 서브 섹션 | ||
| + | 두번째 서브 섹션 | ||
| + | */ | ||
| + | </ | ||
| + | |||
| + | ===== tableofcontents ===== | ||
| + | |||
| + | 아직은.. | ||
| + | |||
| + | ===== 예제 ===== | ||
| + | |||
| + | |< 100% - - >| | ||
| + | | {{: | ||
| + | /*! | ||
| + | @mainpage I am THE Main | ||
| + | |||
| + | 이 문서의 다른 페이지에 대해서 | ||
| + | - @subpage intro | ||
| + | - @subpage advanced | ||
| + | |||
| + | @section first_sec 섹션1 | ||
| + | |||
| + | @subsection steam_subsec 실행 방법 (쓸게 없어서) | ||
| + | |||
| + | # 스팀 실행 방법 | ||
| + | |||
| + | - 컴터를 켠다 | ||
| + | - 윈도우즈에 들어간다. | ||
| + | - 스팀을 켠다. | ||
| + | |||
| + | ## 스팀에서 게임 실행 방법 | ||
| + | |||
| + | - 아 쓸게 없어서.. | ||
| + | 1. 스팀에서 목록을 확인한다. | ||
| + | 2. 업데이트를 확인한다. | ||
| + | |||
| + | @subsection table_usage 테이블 추가 방법 | ||
| + | |||
| + | 첫째헤더 | ||
| + | ------------- | ------------- | ||
| + | 셀 내용 | ||
| + | () | Content Cell | ||
| + | 셀 | 셀 6 | ||
| + | |||
| + | 내용이 비어있는 셀은 인식되지 않는다. | ||
| + | |||
| + | */ | ||
| + | |||
| + | /*! | ||
| + | @page intro 일반사용 | ||
| + | 일반 사용에 대한 문서 | ||
| + | |||
| + | */ | ||
| + | |||
| + | /*! | ||
| + | @page advanced 고급사용 | ||
| + | 일반 사용에 대한 문서 | ||
| + | */ | ||
| + | </ | ||
| + | ====== Markdown : 추가 문서 작업 ====== | ||
| + | |||
| + | 코드에 설명을 추가하는 것만으로는 문서화가 부족한데, | ||
| + | 추가 설명을 위키를 작성하는 것처럼 쓸 수 있는 Markdown 키워드가 지원된다. | ||
| + | |||
| + | * [[http:// | ||
| + | * 과거의 링크들 : [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== 단락 구분 ===== | ||
| + | |||
| + | 한줄 비워두는 것으로 단락과 단락을 구분 | ||
| + | |||
| + | < | ||
| + | 첫번째 단락입니다. | ||
| + | |||
| + | 두번째 단락입니다. 단락이 새로 시작됩니다. | ||
| + | </ | ||
| + | |||
| + | ===== 헤더(목차) ===== | ||
| + | |||
| + | 첫번째 두번째 목차까지 지원. | ||
| + | < | ||
| + | 첫번째 헤더 | ||
| + | =========== | ||
| + | |||
| + | 두번째 헤더 | ||
| + | ----------- | ||
| + | </ | ||
| + | * 헤더 키워드는 스트링 길이만큼 필요하지 않고, **2개 이상이면 됩니다.** | ||
| + | |||
| + | 1~6까지 지원하는 키워드도 있는데 %%#%% 키워드를 씁니다. | ||
| + | |||
| + | < | ||
| + | # 첫번째 헤더 | ||
| + | ### 3번째 헤더 | ||
| + | </ | ||
| + | |||
| + | ===== 인용문 ===== | ||
| + | |||
| + | < | ||
| + | > 인용문의 시작. | ||
| + | > spanning multiple lines | ||
| + | </ | ||
| + | |||
| + | 뭔가 하나 더 있는데, 이해 안됨. | ||
| + | |||
| + | ===== 리스트(목록) ===== | ||
| + | |||
| + | * 단순히, +, -, * 로 시작되면 목록 형식으로 변환됨 | ||
| + | * 더 하위 리스트는 탭으로 인덴트 해주면 하위 항목으로 인식됩니다. | ||
| + | |||
| + | < | ||
| + | - Item 1 | ||
| + | |||
| + | More text for this item. | ||
| + | |||
| + | - Item 2 | ||
| + | + nested list item. | ||
| + | + another nested item. | ||
| + | - Item 3 | ||
| + | </ | ||
| + | |||
| + | 숫자형 리스트를 사용할 수도 있다. **숫자를 그대로 쓰라** | ||
| + | |||
| + | < | ||
| + | 1. First item. | ||
| + | 2. Second item. | ||
| + | </ | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | ===== 코드 ===== | ||
| + | |||
| + | 코드는 단락을 구분 지은 다음, 공백 4칸을 사용하면 만들 수 있다. | ||
| + | |||
| + | < | ||
| + | This a normal paragraph | ||
| + | |||
| + | This is a code block | ||
| + | |||
| + | We continue with a normal paragraph again. | ||
| + | </ | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | 또는 | ||
| + | |||
| + | < | ||
| + | 1. List item | ||
| + | |||
| + | Not an indented code block, but a second paragraph | ||
| + | in the list item | ||
| + | |||
| + | ~~~~{.cs} | ||
| + | This is a code block, fenced-style | ||
| + | ~~~~ | ||
| + | </ | ||
| + | |||
| + | 간단한 코드 추가 | ||
| + | |||
| + | (`) 키워드로 간단한 코드 효과를 넣을 수 있다. | ||
| + | |||
| + | < | ||
| + | Use the `printf()` function. | ||
| + | </ | ||
| + | |||
| + | ===== 테이블 ===== | ||
| + | |||
| + | 기본 | ||
| + | |||
| + | <code cpp> | ||
| + | First Header | ||
| + | ------------- | ------------- | ||
| + | Content Cell | Content Cell | ||
| + | Content Cell | Content Cell | ||
| + | </ | ||
| + | |||
| + | 셀 내부 정렬 | ||
| + | |||
| + | <code cpp> | ||
| + | | Right | Center | Left | | ||
| + | | ----: | :----: | :---- | | ||
| + | | 10 | 10 | 10 | | ||
| + | | 1000 | 1000 | 1000 | | ||
| + | </ | ||
| + | ====== DoxyWizard ====== | ||
| + | |||
| + | 직접 doxygen을 쓰는 것보다는 doxywizard로 옵션을 수정하는게 덜 피곤한 것 같다. | ||
| + | |||
| + | ===== PRE.PROCESSOR ===== | ||
| + | |||
| + | 프로그램 메뉴 상의 위치 Expert > Preprocessor ( [[http:// | ||
| + | |||
| + | **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 | ||
| + | PROJECT_NAME | ||
| + | PROJECT_NUMBER | ||
| + | PROJECT_BRIEF | ||
| + | PROJECT_LOGO | ||
| + | OUTPUT_DIRECTORY | ||
| + | CREATE_SUBDIRS | ||
| + | OUTPUT_LANGUAGE | ||
| + | BRIEF_MEMBER_DESC | ||
| + | REPEAT_BRIEF | ||
| + | ABBREVIATE_BRIEF | ||
| + | " | ||
| + | " | ||
| + | is \ | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | a \ | ||
| + | an \ | ||
| + | the | ||
| + | ALWAYS_DETAILED_SEC | ||
| + | INLINE_INHERITED_MEMB | ||
| + | FULL_PATH_NAMES | ||
| + | STRIP_FROM_PATH | ||
| + | STRIP_FROM_INC_PATH | ||
| + | SHORT_NAMES | ||
| + | JAVADOC_AUTOBRIEF | ||
| + | QT_AUTOBRIEF | ||
| + | MULTILINE_CPP_IS_BRIEF = YES | ||
| + | INHERIT_DOCS | ||
| + | SEPARATE_MEMBER_PAGES | ||
| + | TAB_SIZE | ||
| + | ALIASES | ||
| + | TCL_SUBST | ||
| + | OPTIMIZE_OUTPUT_FOR_C | ||
| + | OPTIMIZE_OUTPUT_JAVA | ||
| + | OPTIMIZE_FOR_FORTRAN | ||
| + | OPTIMIZE_OUTPUT_VHDL | ||
| + | EXTENSION_MAPPING | ||
| + | MARKDOWN_SUPPORT | ||
| + | AUTOLINK_SUPPORT | ||
| + | BUILTIN_STL_SUPPORT | ||
| + | CPP_CLI_SUPPORT | ||
| + | SIP_SUPPORT | ||
| + | IDL_PROPERTY_SUPPORT | ||
| + | DISTRIBUTE_GROUP_DOC | ||
| + | SUBGROUPING | ||
| + | INLINE_GROUPED_CLASSES = YES | ||
| + | INLINE_SIMPLE_STRUCTS | ||
| + | TYPEDEF_HIDES_STRUCT | ||
| + | LOOKUP_CACHE_SIZE | ||
| + | # | ||
| + | # Build related configuration options | ||
| + | # | ||
| + | EXTRACT_ALL | ||
| + | EXTRACT_PRIVATE | ||
| + | EXTRACT_PACKAGE | ||
| + | EXTRACT_STATIC | ||
| + | EXTRACT_LOCAL_CLASSES | ||
| + | EXTRACT_LOCAL_METHODS | ||
| + | EXTRACT_ANON_NSPACES | ||
| + | HIDE_UNDOC_MEMBERS | ||
| + | HIDE_UNDOC_CLASSES | ||
| + | HIDE_FRIEND_COMPOUNDS | ||
| + | HIDE_IN_BODY_DOCS | ||
| + | INTERNAL_DOCS | ||
| + | CASE_SENSE_NAMES | ||
| + | HIDE_SCOPE_NAMES | ||
| + | SHOW_INCLUDE_FILES | ||
| + | FORCE_LOCAL_INCLUDES | ||
| + | INLINE_INFO | ||
| + | SORT_MEMBER_DOCS | ||
| + | SORT_BRIEF_DOCS | ||
| + | SORT_MEMBERS_CTORS_1ST = NO | ||
| + | SORT_GROUP_NAMES | ||
| + | SORT_BY_SCOPE_NAME | ||
| + | STRICT_PROTO_MATCHING | ||
| + | GENERATE_TODOLIST | ||
| + | GENERATE_TESTLIST | ||
| + | GENERATE_BUGLIST | ||
| + | GENERATE_DEPRECATEDLIST= YES | ||
| + | ENABLED_SECTIONS | ||
| + | MAX_INITIALIZER_LINES | ||
| + | SHOW_USED_FILES | ||
| + | SHOW_FILES | ||
| + | SHOW_NAMESPACES | ||
| + | FILE_VERSION_FILTER | ||
| + | LAYOUT_FILE | ||
| + | CITE_BIB_FILES | ||
| + | # | ||
| + | # Configuration options related to warning and progress messages | ||
| + | # | ||
| + | QUIET = NO | ||
| + | WARNINGS | ||
| + | WARN_IF_UNDOCUMENTED | ||
| + | WARN_IF_DOC_ERROR | ||
| + | WARN_NO_PARAMDOC | ||
| + | WARN_FORMAT | ||
| + | WARN_LOGFILE | ||
| + | # | ||
| + | # Configuration options related to the input files | ||
| + | # | ||
| + | INPUT = Assets/ | ||
| + | | ||
| + | INPUT_ENCODING | ||
| + | FILE_PATTERNS | ||
| + | *.cc \ | ||
| + | *.cxx \ | ||
| + | *.cpp \ | ||
| + | *.c++ \ | ||
| + | *.d \ | ||
| + | | ||
| + | *.ii \ | ||
| + | *.ixx \ | ||
| + | *.ipp \ | ||
| + | *.i++ \ | ||
| + | *.inl \ | ||
| + | *.h \ | ||
| + | *.hh \ | ||
| + | *.hxx \ | ||
| + | *.hpp \ | ||
| + | *.h++ \ | ||
| + | *.idl \ | ||
| + | *.odl \ | ||
| + | *.cs \ | ||
| + | *.php \ | ||
| + | | ||
| + | *.inc \ | ||
| + | *.m \ | ||
| + | | ||
| + | *.md \ | ||
| + | *.mm \ | ||
| + | *.dox \ | ||
| + | *.py \ | ||
| + | *.f90 \ | ||
| + | *.f \ | ||
| + | *.for \ | ||
| + | *.vhd \ | ||
| + | | ||
| + | *.b \ | ||
| + | *.cs | ||
| + | RECURSIVE | ||
| + | EXCLUDE | ||
| + | EXCLUDE_SYMLINKS | ||
| + | EXCLUDE_PATTERNS | ||
| + | EXCLUDE_SYMBOLS | ||
| + | EXAMPLE_PATH | ||
| + | EXAMPLE_PATTERNS | ||
| + | EXAMPLE_RECURSIVE | ||
| + | IMAGE_PATH | ||
| + | INPUT_FILTER | ||
| + | FILTER_PATTERNS | ||
| + | FILTER_SOURCE_FILES | ||
| + | FILTER_SOURCE_PATTERNS = | ||
| + | USE_MDFILE_AS_MAINPAGE = | ||
| + | # | ||
| + | # Configuration options related to source browsing | ||
| + | # | ||
| + | SOURCE_BROWSER | ||
| + | INLINE_SOURCES | ||
| + | STRIP_CODE_COMMENTS | ||
| + | REFERENCED_BY_RELATION = NO | ||
| + | REFERENCES_RELATION | ||
| + | REFERENCES_LINK_SOURCE = YES | ||
| + | SOURCE_TOOLTIPS | ||
| + | USE_HTAGS | ||
| + | VERBATIM_HEADERS | ||
| + | CLANG_ASSISTED_PARSING = NO | ||
| + | CLANG_OPTIONS | ||
| + | # | ||
| + | # Configuration options related to the alphabetical class index | ||
| + | # | ||
| + | ALPHABETICAL_INDEX | ||
| + | COLS_IN_ALPHA_INDEX | ||
| + | IGNORE_PREFIX | ||
| + | # | ||
| + | # Configuration options related to the HTML output | ||
| + | # | ||
| + | GENERATE_HTML | ||
| + | HTML_OUTPUT | ||
| + | HTML_FILE_EXTENSION | ||
| + | HTML_HEADER | ||
| + | HTML_FOOTER | ||
| + | HTML_STYLESHEET | ||
| + | HTML_EXTRA_STYLESHEET | ||
| + | HTML_EXTRA_FILES | ||
| + | HTML_COLORSTYLE_HUE | ||
| + | HTML_COLORSTYLE_SAT | ||
| + | HTML_COLORSTYLE_GAMMA | ||
| + | HTML_TIMESTAMP | ||
| + | HTML_DYNAMIC_SECTIONS | ||
| + | HTML_INDEX_NUM_ENTRIES = 100 | ||
| + | GENERATE_DOCSET | ||
| + | DOCSET_FEEDNAME | ||
| + | DOCSET_BUNDLE_ID | ||
| + | DOCSET_PUBLISHER_ID | ||
| + | DOCSET_PUBLISHER_NAME | ||
| + | GENERATE_HTMLHELP | ||
| + | CHM_FILE | ||
| + | HHC_LOCATION | ||
| + | GENERATE_CHI | ||
| + | CHM_INDEX_ENCODING | ||
| + | BINARY_TOC | ||
| + | TOC_EXPAND | ||
| + | GENERATE_QHP | ||
| + | QCH_FILE | ||
| + | QHP_NAMESPACE | ||
| + | QHP_VIRTUAL_FOLDER | ||
| + | QHP_CUST_FILTER_NAME | ||
| + | QHP_CUST_FILTER_ATTRS | ||
| + | QHP_SECT_FILTER_ATTRS | ||
| + | QHG_LOCATION | ||
| + | GENERATE_ECLIPSEHELP | ||
| + | ECLIPSE_DOC_ID | ||
| + | DISABLE_INDEX | ||
| + | GENERATE_TREEVIEW | ||
| + | ENUM_VALUES_PER_LINE | ||
| + | TREEVIEW_WIDTH | ||
| + | EXT_LINKS_IN_WINDOW | ||
| + | FORMULA_FONTSIZE | ||
| + | FORMULA_TRANSPARENT | ||
| + | USE_MATHJAX | ||
| + | MATHJAX_FORMAT | ||
| + | MATHJAX_RELPATH | ||
| + | MATHJAX_EXTENSIONS | ||
| + | MATHJAX_CODEFILE | ||
| + | SEARCHENGINE | ||
| + | SERVER_BASED_SEARCH | ||
| + | EXTERNAL_SEARCH | ||
| + | SEARCHENGINE_URL | ||
| + | SEARCHDATA_FILE | ||
| + | EXTERNAL_SEARCH_ID | ||
| + | EXTRA_SEARCH_MAPPINGS | ||
| + | # | ||
| + | # Configuration options related to the LaTeX output | ||
| + | # | ||
| + | GENERATE_LATEX | ||
| + | LATEX_OUTPUT | ||
| + | LATEX_CMD_NAME | ||
| + | MAKEINDEX_CMD_NAME | ||
| + | COMPACT_LATEX | ||
| + | PAPER_TYPE | ||
| + | EXTRA_PACKAGES | ||
| + | LATEX_HEADER | ||
| + | LATEX_FOOTER | ||
| + | LATEX_EXTRA_FILES | ||
| + | PDF_HYPERLINKS | ||
| + | USE_PDFLATEX | ||
| + | LATEX_BATCHMODE | ||
| + | LATEX_HIDE_INDICES | ||
| + | LATEX_SOURCE_CODE | ||
| + | LATEX_BIB_STYLE | ||
| + | # | ||
| + | # Configuration options related to the RTF output | ||
| + | # | ||
| + | GENERATE_RTF | ||
| + | RTF_OUTPUT | ||
| + | COMPACT_RTF | ||
| + | RTF_HYPERLINKS | ||
| + | RTF_STYLESHEET_FILE | ||
| + | RTF_EXTENSIONS_FILE | ||
| + | # | ||
| + | # Configuration options related to the man page output | ||
| + | # | ||
| + | GENERATE_MAN | ||
| + | MAN_OUTPUT | ||
| + | MAN_EXTENSION | ||
| + | MAN_LINKS | ||
| + | # | ||
| + | # Configuration options related to the XML output | ||
| + | # | ||
| + | GENERATE_XML | ||
| + | XML_OUTPUT | ||
| + | XML_SCHEMA | ||
| + | XML_DTD | ||
| + | XML_PROGRAMLISTING | ||
| + | # | ||
| + | # Configuration options related to the DOCBOOK output | ||
| + | # | ||
| + | GENERATE_DOCBOOK | ||
| + | DOCBOOK_OUTPUT | ||
| + | # | ||
| + | # Configuration options for the AutoGen Definitions output | ||
| + | # | ||
| + | GENERATE_AUTOGEN_DEF | ||
| + | # | ||
| + | # Configuration options related to the Perl module output | ||
| + | # | ||
| + | GENERATE_PERLMOD | ||
| + | PERLMOD_LATEX | ||
| + | PERLMOD_PRETTY | ||
| + | PERLMOD_MAKEVAR_PREFIX = | ||
| + | # | ||
| + | # Configuration options related to the preprocessor | ||
| + | # | ||
| + | ENABLE_PREPROCESSING | ||
| + | MACRO_EXPANSION | ||
| + | EXPAND_ONLY_PREDEF | ||
| + | SEARCH_INCLUDES | ||
| + | INCLUDE_PATH | ||
| + | INCLUDE_FILE_PATTERNS | ||
| + | PREDEFINED | ||
| + | EXPAND_AS_DEFINED | ||
| + | SKIP_FUNCTION_MACROS | ||
| + | # | ||
| + | # Configuration options related to external references | ||
| + | # | ||
| + | TAGFILES | ||
| + | GENERATE_TAGFILE | ||
| + | ALLEXTERNALS | ||
| + | EXTERNAL_GROUPS | ||
| + | EXTERNAL_PAGES | ||
| + | PERL_PATH | ||
| + | # | ||
| + | # Configuration options related to the dot tool | ||
| + | # | ||
| + | CLASS_DIAGRAMS | ||
| + | MSCGEN_PATH | ||
| + | HIDE_UNDOC_RELATIONS | ||
| + | HAVE_DOT | ||
| + | DOT_NUM_THREADS | ||
| + | DOT_FONTNAME | ||
| + | DOT_FONTSIZE | ||
| + | DOT_FONTPATH | ||
| + | CLASS_GRAPH | ||
| + | COLLABORATION_GRAPH | ||
| + | GROUP_GRAPHS | ||
| + | UML_LOOK | ||
| + | UML_LIMIT_NUM_FIELDS | ||
| + | TEMPLATE_RELATIONS | ||
| + | INCLUDE_GRAPH | ||
| + | INCLUDED_BY_GRAPH | ||
| + | CALL_GRAPH | ||
| + | CALLER_GRAPH | ||
| + | GRAPHICAL_HIERARCHY | ||
| + | DIRECTORY_GRAPH | ||
| + | DOT_IMAGE_FORMAT | ||
| + | INTERACTIVE_SVG | ||
| + | DOT_PATH | ||
| + | DOTFILE_DIRS | ||
| + | MSCFILE_DIRS | ||
| + | DOT_GRAPH_MAX_NODES | ||
| + | MAX_DOT_GRAPH_DEPTH | ||
| + | DOT_TRANSPARENT | ||
| + | DOT_MULTI_TARGETS | ||
| + | GENERATE_LEGEND | ||
| + | DOT_CLEANUP | ||
| + | </ | ||
| + | ++++ | ||
| + | |||
| + | ===== 그래프 표시 : Graphviz ===== | ||
| + | |||
| + | * 다운로드링크 : http:// | ||
| + | |||
| + | 윈도우라면 설치 버젼이 제공되므로, | ||
| + | ====== 키워드 (c comment style) ===== | ||
| + | |||
| + | 주석은 javadoc 스타일로 작성해도 인식 하므로, 일단 패스 | ||
| + | doxygen이 인식하는 키워드 정리 ; 인터넷에 널려 있다. | ||
| + | * 간단하게는 %%/// | ||
| + | * 복수의 키워드를 사용하려면 /*! ~ */ 와 같은 것을 쓴다. | ||
| + | |||
| + | < | ||
| + | /*! | ||
| + | * @brief 설명, | ||
| + | * @brief | ||
| + | * @file 파일명 | ||
| + | * @return | ||
| + | * @author | ||
| + | * @date 작성날짜 | ||
| + | * @param 파라미터 | ||
| + | * @see 참고할 함수나 페이지 | ||
| + | * @todo 다음에 할일 | ||
| + | * @bug | ||
| + | * @code 코드로 쓰는 설명 부분 시작 | ||
| + | * @code 코드 부분 종료 | ||
| + | */ | ||
| + | </ | ||
| + | |||
| + | ====== 독시젠 웹 레퍼런스 ====== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | 제대로 사용하려면 가기 싫어도 자주 가게 되는데... | ||
| + | |||
| + | ====== MS XML Documentation Comment ====== | ||
| + | |||
| + | C#으로 작성할때는 MS 스타일이 자동 입력 되니, 사용할 수 있는 것을 정리한다. 귀찮지만, | ||
| + | |||
| + | < | ||
| + | |||
| + | * MS는 xml 형식으로 주석 문서화가 가능하다. | ||
| + | * %%///%% 로 시작되는 부분이 문서화가 되어지는 부분.< | ||
| + | * %%< | ||
| + | /// < | ||
| + | /// </ | ||
| + | * 이 **%%< | ||
| + | /// < | ||
| + | </ | ||
| + | |||
| + | |||
| + | %%< | ||
| + | |||
| + | |||
| + | < | ||
| + | /// <summary cref=" | ||
| + | /// </ | ||
| + | </ | ||
| + | |||
| + | =====주석 혼합 사용===== | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | /// < | ||
| + | /// 새게임을 시작한다. | ||
| + | /// AppFlowHandler 에서 호출 되어서 게임을 시작된다. 보드를 초기화 하고, | ||
| + | /// 뷰에 메시지를 보낸다. | ||
| + | /// </ | ||
| + | /// <param name=" | ||
| + | /*! | ||
| + | * @param secParam 두번째 파라미터에 대해서 입력한다. | ||
| + | */ | ||
| + | </ | ||
| + | |||
| + | =====링크===== | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | ===== 키워드 ===== | ||
| + | |||
| + | 작성하다보면 자동으로 사용할 키워드를 보여주기 때문에 일단은 필요 없지만.. 그래도 정리해두는 편이 찾기 편할 테니. | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | | %%< | ||
| + | | %%< | ||
| + | | cref | **코드레퍼런스**를 가리킨다. %%<see cref=" | ||
| + | | %%< | ||
| + | | ::: | 단락을 추가할때는 이 태그를 써야 한다는 귀찮은 태그다. | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | | 출력 XML에서 member를 요소 이름에 전달하는지 확인합니다. member는 큰따옴표(" | ||
| + | | | 텍스트 내부에서 링크를 지정하려면 %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | | %%< | ||
| + | |||
| + | ===== < | ||
| + | |||
| + | <code xml> | ||
| + | <list type=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ====== TAG ====== | ||
| + | |||
| + | {{tag> doxygen 독시젠}} | ||
| + | |||
| + | ====== 덧글 피드백 ====== | ||
| + | ~~DISQUS kieuns~~ | ||