Visual Studio 2012 IntelliSense с Visual Assist X и Doxygen

Раньше я писал простые комментарии в свои заголовочные файлы в стиле

// Returns a new string in which all occurrences of a specified string in the
// current instance are replaced with another specified string.
// - strSubject: The string to perform the replacement on.
// - strOldValue: The string to be replaced.
// - strNewValue: The string to replace all occurrences of strOldValue.
static RUNTIME_API String::type Replace
    (_In_       String::type  strSubject,
     _In_ const String::type& strOldValue,
     _In_ const String::type& strNewValue);

так что Visual Assist отображает мне именно этот комментарий:

IntelliSense

В настоящее время я думаю об использовании Doxygen для создания документации для проекта, однако я изо всех сил пытаюсь найти стиль документации, который правильно отображается во всплывающих подсказках и может быть проанализирован с помощью Doxygen. Сначала я подумал о включении комментариев в стиле Doxygen в файлы *.cpp, чтобы отображались только комментарии заголовков. Поэтому в моем исходном файле у меня есть комментарий вроде

/*!
 * Returns a new string in which all occurrences of a specified string in the
 * current instance are replaced with another specified string.
 *
 * \param   strSubject  The string to perform the replacement on.
 * \param   strOldValue The string to be replaced.
 * \param   strNewValue The string to replace all occurrences of strOldValue.
 * 
 * \return  A string that is equivalent to the current string except that all
 *          instances of strOldValue are replaced with strNewValue. If
 *          strOldValue is not found in the current instance, the method returns
 *          the current instance unchanged.
 */
String::type String::Replace
    (_In_       String::type  strSubject,
     _In_ const String::type& strOldValue,
     _In_ const String::type& strNewValue) { /* ... */ }

Удивительно, но я получаю два разных вывода при наведении курсора на эту функцию или при получении визуальных помощников «IntelliSense». Наведение курсора на Replace дает

Подсказка при наведении

в то время как упомянутый IntelliSense дает

введите здесь описание изображения

однако перемещение комментария в стиле Doxygen в заголовок приводит к странному результату

введите здесь описание изображения

Я хотел бы знать, есть ли у вас предложения, как я могу использовать комментарии doxygen в стиле Qt, но чтобы IntelliSense отображала соответствующую всплывающую подсказку (какой бы она ни была), а не отображала разные в зависимости от того, как я ее вызываю? < em>Должен быть способ унифицировать это. (В качестве альтернативы я должен работать как всегда и создавать отдельные заголовки документов, которые состоят только из комментариев doxygen — таким образом у меня не будет проблем, но будут избыточные данные)


person Christian Ivicevic    schedule 03.04.2013    source источник
comment
Я отправил запрос в службу поддержки Whole Tomato по поводу похожей проблемы, которую я видел, они сказали, что могут воспроизвести и зарегистрировали ошибку. Не знаю, когда это решится. Я попробовал текущую последнюю версию Visual Assist с VS 2013.   -  person Max Galkin    schedule 18.06.2014


Ответы (1)


Единственный простой (но уродливый способ), который я вижу, это добавить некоторые директивы препроцессора, чтобы Visual Studio игнорировала их, например

#if 0
/*! your comment
*/
#endif

Вы можете добавить что-то после #endif, чтобы вы могли легко удалить его с помощью исследования и заменить, не удаляя то, что вам нужно. По крайней мере, в VS2013 он довольно хорошо игнорирует блоки #if 0. При этом вы сможете оставить их в одном и том же файле, чтобы было меньше проблем.

person meneldal    schedule 18.06.2014