问题
Please do not mind the strangeness of the following minimal example (I would have to make it much larger to justify why I am doing things this way):
File test.cpp:
#include "a.h"
int main() {
return 0;
}
File a.h:
namespace N { // without namespace all is well!
#include "b.h"
}
File b.h:
/// \file
#ifndef GUARD
#define GUARD
struct A {};
#define CMD 5 // without this, all is well!
#endif
Doxygen 1.8.11 complains:
warning: Member GUARD (macro definition) of file a.h is not documented.
The first interesting thing is that the warning mentions a.h
. The second one is that if either of the commented lines is removed, the warning disappears. What is going on here?
回答1:
You may use conditional documentation to suppress Doxygen warnings like this:
//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
Note that I wrapped #endif
with cond
s, because otherwise you'll get if-endif mismatch warning:
/home/user/doxygen/b.h:13: warning: More #endif's than #if's found.
来源:https://stackoverflow.com/questions/40358150/doxygen-demands-that-an-include-guard-be-documented