2016-11-01 1 views
5

S'il vous plaît ne me dérange pas l'étrangeté de l'exemple minimale suivante (je dois faire beaucoup plus pour justifier pourquoi je fais les choses de cette façon):demande Doxygen qu'un inclure garde le consigner par écrit

test de fichier. cpp:

#include "a.h" 

int main() { 
    return 0; 
} 

fichier ah:

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

fichier bh:

/// \file 

#ifndef GUARD 
#define GUARD 

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

#endif 

Doxygen 1.8.11 se plaint:

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

La première chose intéressante est que l'avertissement mentionne a.h. Le second est que si l'une des lignes commentées est supprimée, l'avertissement disparaît. Qu'est-ce qui se passe ici?

+0

' ah' n'a pas de gardes? –

+0

@old_mountain Uniquement pour la minimalité de l'exemple. – AlwaysLearning

Répondre

0

Vous pouvez utiliser conditional documentation à suppress avertissements Doxygen comme celui-ci:

//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 

Notez que j'enveloppai #endif avec cond s, parce que sinon vous aurez si-endif avertissement de non-concordance:

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

Ceci est une solution de contournement. Mais que se passait-il? Pourquoi l'avertissement a-t-il disparu lorsque je n'ai pas défini 'CMD'? – AlwaysLearning