Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

C#: How to disable at(@), backslash(\) and hash sign(#) inside XML doc comments?

2014-07-06
2014-07-06
  • I would like Doxygen to not pay attention to #, \ and @ directives inside
    XML doc comments (since XML comments have their own directives.) For
    instance I have a class that talks about the meaning of @ and # in a
    programming language I am making:

    /// So #class is a keyword that is parsed like an identifier, but this is
    /// different from the notation @class which already exists in plain C#.
    /// @class is an ordinary identifier that has a "@" sign in front to ensure
    /// that the compiler does not treat it like a keyword at all. #class is a
    /// special identifier that is parsed like an identifier but then treated
    like
    /// a keyword after parsing is complete.

    .../LNode.cs(210): warning: the name already' supplied as the argument of the \class, \struct, \union, or \include command is not an input file .../LNode.cs(211): warning: the namean' supplied as the argument of the
    \class, \struct, \union, or \include command is not an input file
    ...

    I am not sure if this is caused by @ or \ or #, but for some reason Doxygen
    deletes the entire detailed description (very detailed - several pages) of
    this class, i.e. the output does not have a detailed description section.

    I do not want to add doxygen-specific escape sequences because anyone
    reading the source code will not know what they mean, nor will Visual
    Studio strip them out of the XML files it generates.

    Also, does Doxygen understand that in C#, Foo<T> and Foo are two different
    classes?

    .../DList.cs(363): warning: Detected potential recursive class relation
    between class Loyc::Collections::DList and base class
    Loyc::Collections::DList< object >!

    P.S. in a different file, doxygen is unable to parse this code block,
    saying there is an EOF in the code block:

    ///
    /// la0 = LA(0);
    /// if (la0 == 'a' || la0 == 'b') { / alt 1 or alt 2 / }
    ///

    I have to change */ to something else.

    --
    - David
    http://loyc.net