· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Doxygen/강좌03


1. Main Page 작성

Main Page는 무엇인가 하면 바로 Doxygen한 문서에서 첫화면에서 나오는 화면을 작성(장식)하는것이다.

왜 작성을 하는가 하면 이문서는 무엇을 설명하는가와 차례, 작성자, 작성날짜, 수정정보등 기타 정보를 보여주기 위함이다.(개인적으로는 작성자쓰는것을 -_-;;)

음음.. 각설하고 이제 한번 저번의 main화면을 다시 보겠다.




뭔가 허전하지 않는가? 보통 이곳이 멋져야 폼이 난다(-_-;).

그럼 이곳을 멋있게 장식해 보겠다. 일단 helo.c에 한번 문서화를 해보자.

1.1. 소스 작성

  /**
   @file     hello.c
   @brief    hello world  소스파일.
   */
  
  /**
    @mainpage   Hello World 메인페이지
    @section intro 소개
    - 소개      :   프로그램의 기본을 배울수있는 프로그램.
    @section   Program 프로그램명
    - 프로그램명  :   Hello World 프로그램.
    - 프로그램내용    :   화면에 Hello World!을 출력한다.
    @section  INOUTPUT    입출력자료
    - INPUT           :   없음.
    - OUTPUT      :   Hello World 화면출력.
    @section  CREATEINFO      작성정보
    - 작성자      :   infiniterun
    - 작성일      :   2005/04/18
    @section  MODIFYINFO      수정정보
    - 수정자/수정일   : 수정내역
    - infiniterun/2005.0418    :   "Helo World"에 "!"추가
    */
  
  #include <stdio.h>
  
  /**
   @brief     hello Main 함수.
   @return    성공여부.
   */
  int main(
      int    argc,       /**< 인자개수 */
      char * argv[]      /**< 인자 */
      )
  {
       printf("Hello World!\n");
       return 0;
  }
  


1.2. 문서화

문서화 하는 방법은 1회 강좌에서



  • 여기서 Step 1 에 Load...버튼을 클릭하여 저번에 저장한 D:\Doxygen\Doxyfile을 읽어 들이면 된다.(모르겠다면 1회 강좌 [http]3.3 문서화하기를 그대로 다시 해보아라.)

  • 그리고 [http]Step 4의 Start를 눌러 문서화를 한다.

    이제 아래를 보자.



전화면과 많이 바뀐걸 알수 있다. 이제 이것을 설명하겠다.

1.3. 설명

1.3.1. @mainpage

   /**
   @mainpage    Main화면에 출력될 메시지(한글영문 모두 가능)
   ...
   */
  


/** 는 Doxygen구문이 시작된다는것이고 @mainpage 는 아래 Doxygen구문이 MainPage을 나타낸다는것이다.

1.3.2. @section

   /**
   ...
   @section intro 소개
   - 소개      :   프로그램의 기본을 배울수있는 프로그램.

   @section Section구분자   화면에 출력될 Section명.
   - 설명(한글 영문 모두 가능하며 아무거나 쓰면됨
   */

  


1.3.2.1. Section구분자
영문만 가능하며 Section을 구분하기위한 표시이다. 한글은 안된다.(필자도 잘 모르겠다.)

그냥 하무거나 써도 된다(section1, section2, ... 등등등..)
1.3.2.2. 화면에 출력될 Section명
한글도 가능하며 소재목이 될 것을 쓴다.(예. 소개, 작성자정보, 수정정보등.)
1.3.2.3. -
그냥 워드에서 말하는 번호매기기 등과 같다. 한줄 한줄 설명을 쓰기위해 쓴다고 보면 된다.

2. 긴 설명 쓰기

보통 함수 설명을 할때 brief는 간단한 설명을 쓰는것이고 반드시 한줄이내에 써야한다.

@brief에서 엔터(\n 포함)가 들어가면 안된다.

그래서 필요한것이 여러줄 설명, 긴줄 설명인데 이 여러줄 설명은

@brief 아래 빈줄 하나를 두고 설명을 쓴다.

2.1. 예제1



  /**
   @brief     hello Main 함수.

   긴 설명은 한줄을 넘긴다음 넣어준다. \n
   하나둘. 셋.. 넷..
   다섯.. 여섯.. \n

   @return    성공여부.
   */
  int main(
      int    argc,       /**< 인자개수 */
      char * argv[]      /**< 인자 */
      )
  {

  


주의 할것은 위의 것중 끝에 \n이 붙어 있는것만 문서화에서 엔터가 들어간다는 것이다.

위의
  /**
  ...
  긴 설명은 한줄을 넘긴다음 넣어준다. \n
  하나둘. 셋.. 넷..
  다섯.. 여섯.. \n
  */
  
  긴 설명은 한줄을 넘긴다음 넣어준다.
  하나둘. 셋.. 넷..  다섯.. 여섯.. 

  


이렇게 나온다.(엔터가 없고 대신 스페이스바가 하나 들어간다.)



2.2. 예제2

  /**
   @file     hello.c
   @brief    hello world  소스파일.

   파일여러줄 설명입니다.\n
   진짜 여러줄 입니다.\n
   음.. 하나. 둘. 셋
   넷다섯.
   */
  

3. struct(class), enum 문서화

이제 아래 예제만 보면 거의 이해가 될것이다.

 /**
  @brief buffer structor
 
  Telnet에서 정송되는 데이터에 대해 프로토콜을 처리해야 하기 위하여,
  효율적으로 데이터를 전송해야 할 입출력 버퍼 structor
 */
 struct  buffer
 {
         char       *buf;   /**< 데이터를 저장할 주소공간   */
         int        size;   /**< buf에 할당된 메모리 크기   */
         int        head;   /**< buf에 저장된 데이터의 처음 Index   */
         int        tail;   /**< buf에 저장된 데이터의 마지막 index */
         int        count;  /**< buf에 저장된 데이터의 byte 수      */
 };
 

 /** @brief TRUE FALSE정의. */
 enum BOOLEAN
 {
    FALSE=0,        /**< FALSE */
    TRUE            /**< TRUE */
 };
 



  • struct buffer 문서화



  • enum BOOLEAN 문서화


    /**< */ 는 앞에 있는 변수나 어떤 인자를 설명하는 것이다.

    나머지는 앞에서 설명이 다 되었기 때문에 설명을 생각하겠다.


4. define, 전역변수

 #define MAX_READ_BUF   1024    /**< 최대 read buffer size      */

 short  port;                   /**< Telnet port number */
 


  • define, 전역변수 문서화
    앞에서 설명이 다 된 내용이다.

5. 지금까지 한 전체 소스

/**
  @file     hello.c
  @brief    hello world  소스파일.

  파일여러줄 설명입니다.\n
  진짜 여러줄 입니다.\n
  음.. 하나. 둘. 셋
  넷다섯.
  */

/**
  @mainpage   Hello World 메인페이지
  @section intro 소개
  - 소개      :   프로그램의 기본을 배울수있는 프로그램.
  @section   Program 프로그램명
  - 프로그램명  :   Hello World 프로그램.
  - 프로그램내용    :   화면에 Hello World!을 출력한다.
  @section  INOUTPUT    입출력자료
  - INPUT           :   없음.
  - OUTPUT      :   Hello World 화면출력.
  @section  CREATEINFO      작성정보
  - 작성자      :   infiniterun
  - 작성일      :   2005/04/18
  @section  MODIFYINFO      수정정보
  - 수정자/수정일   : 수정내역
  - infiniterun/2005.0418    :   "Helo World"에 "!"추가
  */

#include <stdio.h>


#define MAX_READ_BUF   1024    /**< 최대 read buffer size      */

short  port;                   /**< Telnet port number */

/**
  @brief buffer structor

  Telnet에서 정송되는 데이터에 대해 프로토콜을 처리해야 하기 위하여,
  효율적으로 데이터를 전송해야 할 입출력 버퍼 structor
  */
struct  buffer
{
    char       *buf;   /**< 데이터를 저장할 주소공간   */
    int        size;   /**< buf에 할당된 메모리 크기   */
    int        head;   /**< buf에 저장된 데이터의 처음 Index   */
    int        tail;   /**< buf에 저장된 데이터의 마지막 index */
    int        count;  /**< buf에 저장된 데이터의 byte 수      */
};

/** @brief TRUE FALSE정의. */
enum BOOLEAN
{
    FALSE=0,        /**< FALSE */
    TRUE            /**< TRUE */
};

/**
  @brief     hello Main 함수.

  긴 설명은 한줄을 넘긴다음 넣어준다. \n
  하나둘. 셋.. 넷..
  다섯.. 여섯.. \n

  @return    성공여부.
  */
int main(
        int    argc,       /**< 인자개수 */
        char * argv[]      /**< 인자 */
        )
{
    printf("Hello World!\n");
    return 0;
}

 


6. 지금까지의 문서화 예제 링크

Hello World 전체 문서화


7. 맺음말

지금까지 설명한것으로 거의 모든것을 할수 있다.

앞으로는 활용쪽에 가까울것이다.

다음에는 여러파일을 가지고 문서화를 하는것을 다루어 보겠다. infiniterun

8. 게시판


잘 봤습니다. 혹시 여러파일 버전이 기대되는군요. -- missu 2006-01-31 04:53:23

와 문서화 -- donguk22 2006-01-31 12:07:22

움. 누군가 볼꺼라고 생각도 못했는데. 보시는군요^^ 시간나면 여러문서도 해볼까요? ^^ -- infiniterun 2006-02-01 13:17:03

잘 보고 있습니다.^^ -- 59.25.180.124 2006-02-01

저도 보고 있습니다. 지금하는거에 쓰고 있는데 도움이 되겠죠 ? ^^ -- 220.94.243.15 2006-02-04

음, 오늘 처음 봤는데 내용이 좋네요. 앞으로도 좋은 내용 기대하겠습니다. ^^ 1, 2부는 어디에 있죠? -- 221.139.129.39 2006-02-04

좋은 내용인 것 같습니다~ 역시 문서화~

잘 보고 갑니다. ^^ -- bghunter 2006-03-30

이렇게 하는군요. 한번 써먹어봐야겠습니다. -- sp_uad01 2006-03-31

감사히 잘 보고 갑니다. 도움이 많이 되었어요. ^^ -- seunghb 2006-04-18

감사합니다. 잘 보고 갑니다. ^^ 다른 형식의 파일들은 않될까요..? ARM ASM도 만들어 주면 좋을텐데..방법이 없을까나... -- zerojin 2006-04-22

잘 봤습니다. 뭔지 궁금했는데 잘 설명을 해 주셔서 고맙습니다. -- ^^ 2006-04-24

감사합니다. 설명이 쉽게 되어있네요 앞으로 많은 도움이 될것 같아요 ^^ -- 61.83.224.222 2006-05-01

너무 좋은 자료 감사합니다 ^^ -- 124.61.213.109 2006-05-09

doxygen이 어떤건지 궁금했는데, 좋은 도움 되었습니다. -- windfruit 2006-06-01


다시 doxygen쓰려고 찾아왔어요. doxygen이 생성하는 문서가 이전보다 예뻐졌네요(그리고 .c파일의 함수 주석이 헤더파일쪽에도 나오네요. 원래 그랬나ㅋ) -- Gomdori 2006-10-10 00:37:49

fehead형 저도 봤어요 ㅋㅋ -- ntames8 2007-06-08 16:07:03

난 이걸 이제 봤네... -- appler 2008-06-10 19:16:19

captcha
Username:

ID
Password
Join
Words must be weighed, not counted.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-06-10 19:16:19
Processing time 0.0134 sec