2010-10-05 10 views
0

d'une bibliothèque native, externe, je reçois un fichier d'en-tête avec les déclarations de ENUM:Création doc html CLI C++ avec des macros

#define LIST(declare) \ 
    declare(A, "aaa") \ 
    declare(B, "bbb") \ 
    declare(C, "ccc") \ 

utilisant, je crée un enum .NET:

#define EXTRACT(p1,p2) p1, 
enum class Val { LIST(EXTRACT) }; 

Ce qui fonctionne très bien. Le résultat est Val.A, ... valeurs. Maintenant, je voudrais doc html générer automatiquement /// aaa en utilisant la même méthode, la sortie de cette macro ressemblerait à ceci:

enum class Val { 
    /// aaa 
    A, 
    /// bbb 
    B, 
    /// ccc 
    C, 
} 

Création d'une macro comme

#define EXTRACT(p1,p2) /// p2 \ 
          p1, 

ne fonctionne pas parce que compilateur C++ traite /// comme un commentaire, qui va à la ligne suivante à cause du \ à la fin de la ligne.

Est-il possible de réaliser ceci sans utiliser d'outils de codegen? Merci!

Répondre

1

Le préprocesseur de Microsoft ne conserve pas les commentaires dans les macros. Donc, techniquement, insérer une nouvelle ligne est impossible. See this Q & A pour plus de détails.

Cela rend votre génération de code impossible en utilisant le préprocesseur MS en premier lieu.