2016-11-01 15 views
5

Xin đừng để ý đến sự kỳ lạ của ví dụ tối thiểu sau đây (tôi sẽ phải làm cho nó lớn hơn nhiều để biện minh cho việc tôi làm theo cách này):Doxygen yêu cầu một bảo vệ bao gồm phải được ghi lại

Kiểm tra tệp. cpp:

#include "a.h" 

int main() { 
    return 0; 
} 

file ah:

namespace N { // without namespace all is well! 
#include "b.h" 
} 

file bh:

/// \file 

#ifndef GUARD 
#define GUARD 

struct A {}; 
#define CMD 5 // without this, all is well! 

#endif 

Doxygen 1.8.11 phàn nàn:

warning: Member GUARD (macro definition) of file a.h is not documented. 

Điều thú vị đầu tiên là cảnh báo đề cập a.h. Điều thứ hai là nếu một trong hai dòng nhận xét bị xóa, cảnh báo sẽ biến mất. Chuyện gì đang xảy ra ở đây?

+0

' ah' không có bảo vệ? –

+0

@old_mountain Chỉ dành cho mức tối thiểu của ví dụ. – AlwaysLearning

Trả lời

0

Bạn có thể sử dụng conditional documentation-suppress cảnh báo Doxygen như thế này:

//b.h 
/// \file 

//! @cond SuppressGuard 
#ifndef GUARD 
#define GUARD 
//! @endcond 

struct A {}; 
//! @cond SuppressCmd 
#define CMD 5 // without this, all is well! 
//! @endcond 

//! @cond SuppressGuard 
#endif 
//! @endcond 

Lưu ý rằng tôi quấn #endif với cond s, bởi vì nếu không bạn sẽ nhận được nếu-endif cảnh báo không phù hợp:

/home/user/doxygen/b.h:13: warning: More #endif's than #if's found. 
+0

Đây là giải pháp thay thế. Nhưng chuyện gì đang xảy ra? Tại sao cảnh báo biến mất khi tôi không định nghĩa 'CMD'? – AlwaysLearning

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