Как мне представить символ «<» в моей документации XML? - PullRequest
0 голосов
/ 29 июня 2010

Я видел здесь несколько вопросов о SO, связанных с тегами XML-документации Microsoft , но у меня возникают проблемы с добавлением примера кода:

/// <summary>Return the oldest acceptable timestamp for a data packet.</summary>
/// <example>
/// if( GetOldestValidResultTime() < lastResultTime )
/// {
///     Console::WriteLine("Results are too old");
/// }
/// </example>
/// <returns>The timestamp (the Milliseconds field from a raw result) of the oldest acceptable data item given the timestamp in the latest result in the internal buffer.</returns>
long GetOldestValidResultTime();

Это дает мне:

DataProcessor.h(154) : warning C4635: XML document comment applied to 'MyApp.DataProcessor.GetOldestValidResultTime': badly-formed XML: Only one top level element is allowed in an XML document.

Есть ли какой-либо способ обойти это, кроме использования &lt;, что усложняет примеры, если вы читаете источник напрямую, в отличие от вывода DOxygen (например)?..или код &lt; единственный вариант здесь?

[Редактировать] Я пробовал предложенный блок CDATA, но он работает только для однострочных:

/// <example><![CDATA[ test < 5; ]]></example>
/// <example>
/// <![CDATA[ test < 5; ]]>
/// </example>

.. но не многострочные комментарии, которые могли бы на самом деле сделать для удобочитаемого примера:

/// <example><![CDATA[ 
/// test < 5;
/// ]]> </example>

[Edit2] Попытка Пьерра удалить \\перед двумя последними утверждениями, которые, как и следовало ожидать, провалились:

/// <example><![CDATA[ 
test < 5;
]]> </example>

дает:

error C2143: syntax error : missing ';' before '<'

1 Ответ

4 голосов
/ 29 июня 2010

Использовать блок CDATA.

...