2010-01-14 38 views
6

Code:biến Lập tài liệu với Doxygen trong C

#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"); 
} 

này không tạo ra giới thiệu cho iOne, iTwoiThree mặc dù đó là ý định của tôi. Làm thế nào để sửa lỗi này?

Trả lời

8

Bạn cần mở nhận xét của mình dưới dạng bình luận Doxygen với /**.

Nó có thể được rõ ràng hơn để làm điều này, mặc dù:

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

Bằng cách này bạn có thể thay đổi tên của biến mà không vi phạm tài liệu của bạn và nó cũng dễ dàng hơn trên các lập trình viên khác, những người cần phải đọc mã nguồn của bạn bởi vì mô tả của biến nằm bên cạnh nó, không phải ở đâu đó trong tệp.

+0

Cảm ơn lời khuyên. Bạn đang đúng về mã của bạn có ý nghĩa hơn, nhưng tôi muốn biết làm thế nào để làm các định nghĩa \ var đúng bên trong mã của tôi. Điều gì sẽ là đúng cách để làm điều đó? – Pieter

+1

Pieter: Trước hết, tôi nghĩ rằng bạn cần phải tài liệu tập tin chính nó ('/ ** @file * /') và sau đó như tôi đã nói trong câu trả lời của tôi, tôi không nghĩ rằng Doxygen có thể tài liệu biến địa phương. – Joey

+2

Tôi không nghĩ rằng điều này sẽ làm việc, vì chúng là các biến cục bộ. Bạn nên cải thiện câu trả lời này, như bây giờ nó gây hiểu lầm. –

13

DOxygen được tạo thành các lớp tài liệu và tiêu đề chức năng hoặc nói cách khác, giao diện . Hãy suy nghĩ về tài liệu như một cái gì đó mà các lập trình viên khác nghiên cứu để sử dụng các lớp và các chức năng của bạn đúng cách. Bạn không nên sử dụng DOxygen để ghi lại việc triển khai của bạn. Thay vào đó, hãy ghi lại các biến cục bộ của bạn trong nguồn với // hoặc /* */.

Có một số cách để đưa ra nhận xét trong DOxygen, một số ví dụ về (đối với biến thành viên) có thể được xem trong hướng dẫn sử dụng here. Tôi đã sao chép chúng bên dưới.

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

Tôi thấy có một chút rắc rối khi bạn giải thích Doxygen lần đầu tiên không nên được sử dụng cho điều này nhưng sau đó hiển thị toàn bộ sự hỗ trợ Doxygen đưa ra để ghi lại nó. Bạn có bất kỳ nguồn nào nói rằng Doxygen có nghĩa là ghi lại "giao diện" chứ không phải phần còn lại? – Zimano

+1

Đoạn mã tôi cung cấp hiển thị các cách để ghi lại các biến là thành viên của "tệp, cấu trúc, công đoàn, lớp hoặc enum". Vì các biến 'iOne, iTwo, iThree' của OP nằm bên trong' main() 'nên chúng không thể truy cập được ở bất kỳ phạm vi cấp độ giao diện nào và do đó sẽ không được Doxygen ghi lại. Nói cách khác: Doxygen không, và không nên tạo tài liệu giải thích biến 'i' trong câu lệnh' for (int i = 0; i <10; i ++) 'vì phạm vi' i' là quá giới hạn cho điều đó để có ý nghĩa. – Richard

+1

Tôi hiểu ngay bây giờ. Cảm ơn! – Zimano

Các vấn đề liên quan