web-dev-qa-db-fra.com

Comment écrire des commentaires C ++ qui apparaissent dans Intellisense?

Je programme en C++ à l'aide de Visual Studio 2010 Ultimate. Je souhaite documenter certaines fonctions et je souhaite que la documentation apparaisse dans Intellisense.

Selon MSDN , j'ai juste besoin de mettre le commentaire avant la déclaration ou après sur la même ligne. J'ai donc essayé ceci:

// This is a test.
void foo();
void bar() { foo(); }

Lorsque je déplace ma souris sur foo(), le commentaire n'apparaît pas dans l'info-bulle. J'ai aussi essayé:

  • ///
  • <summary></summary> balises
  • Construire avec /doc (en définissant l'option "Générer des fichiers de documentation XML" dans les paramètres du projet)

Je n'ai pas eu de chance jusqu'à présent. Quelqu'un sait-il comment faire fonctionner cela?

50
Etienne Dechamps

Cela est désormais pris en charge dans VS 2012!

Auparavant, les balises XML dans les commentaires n'étaient lues que par C++/CLI, et non par du C++ ancien. VS 2012 apporte maintenant au moins une partie de cela en C++ normal - c'est dans le Quoi de neuf dans Visual Studio 2012 et dans les documents MSDN: Documentation XML (Visual C++) .

Je l'ai testé avec ma propre application en 2012 ultime, et je peux confirmer que les balises de résumé, para et seealso sont toutes extraites et formatées pour les info-bulles.

16
Marcus10110

Je ne sais pas quelle version de Visual Studio a introduit cela, mais dans VS 2015, vous pouvez simplement mettre un commentaire au-dessus d'un function, method, class, struct , union, enum class, namespace ou même des variables individuelles (locales aussi) et elles seront affichées par Intellisense. Si vous souhaitez documenter quelque chose à partir d'un module différent, vous devez écrire un commentaire dans le fichier d'en-tête. Exemples: FunctionClassVariable

9
Maciej Szpakowski

Essayez d'installer Visual Assist et d'utiliser doxygen style:

/**
* COMMENT DESCRIBING A CLASS
**/
class Foo
{
   public:
      /**
      *   \brief A foo method.
      *
      *   More complete description of foo.
      *   
      *   \param i A foo parameter.
      *   \return An int
      *
      **/
      int fooMethod(int i);

   private:
      int i; /*!< COMENT OF A MEMBER */

};
8
Ian Medeiros

Je n'ai pas utilisé VS2010 depuis trop d'années pour me rappeler si cela a fonctionné là-bas ou non. Mais ce que j'ai fait pendant des années dans de nombreuses versions différentes de VS, c'est ...:

#pragma region foo(float)
/// <summary> .... </summary>
/// <param name="bar"> .... </param>
/// <returns> .... </returns>
int foo(float bar)
{
    // stuff
}
#pragma endregion

En d'autres termes, mettre manuellement exactement ce que Visual Studio mettra automatiquement pour code C # pour vous.

Donnez ensuite au moteur Intellisense une minute environ pour analyser le fichier. Bien sûr, faire un build le forcera à ré-analyser.

Si je me souviens bien, cela fonctionne dans la dernière communauté VS2010 Express, mais je ne me souviens pas si cela a fonctionné dans VS2010 Ultimate.

4
Jesse Chisholm