XML-Dokumentation für C++-Code

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Compiler-Ausgabe als XML


C++-Compiler der vorherigen Generation können eine XML-Datei mit den Deklarationen aus einer C++-Quelltextdatei und den einbezogenen Headern erzeugen. Die generierten Informationen ähneln den im C++-Klassen-Explorer angezeigten Informationen insofern, als dass beide Informationen aus der Symboltabelle des Compilers anzeigen.

Um diese Funktion zu aktivieren, wählen Sie Projekt > Optionen > C++-Compiler > Erweitert, und fügen Sie unter Weitere Optionen der Option "Weitere Optionen für die Übergabe an den Compiler" eine der unten aufgeführten Befehlszeilenoptionen hinzu.
Um diese Funktion in der Befehlszeile zu aktivieren, führen Sie den Befehlszeilen-Compiler mit einer der unten aufgeführten Befehlszeilenoptionen aus.

Das Format (Schema) der XML-Datei wird unter Globale XML-Deklarationen für die Compiler XML-Ausgabe beschrieben.

Befehlszeilenoptionen für die XML-Ausgabe

-Zx - XML-Ausgabe erzeugen

Die Option -Zx veranlasst den Compiler, eine XML-Datei mit den Symbolen zu erzeugen, die während der Verarbeitung einer C++-Quelltextdatei und deren Headern gefunden wurden. Die Option -Zx erzeugt beispielsweise für die folgende Quelltextdatei (test.cpp) die unten gezeigte XML-Datei test.xml:

test.cpp:

class TBase {
  int id;
};

class TDerived : public TBase {
  char *name;
};

test.xml:

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public">
        <members>
            <field name="id" type="int" visibility="private" />
        </members>
    </class>
    <class name="TDerived" visibility="public">
        <ancestor name="TBase">
            <fieldref name="id" visibility="private" />
        </ancestor>
        <members>
            <field name="name" type="char *" visibility="private" />
        </members>
    </class>
</file>

Sie können der Option -Zx jede beliebige Kombination der folgenden Unteroptionen hinzufügen, um deren Verhalten zu ändern:

  • f: Member des Basistyps weglassen.
  • m: Makros ausgeben.
  • p: Datei- und Zeilenposition ausgeben.

-Zxf - Vorfahrinformationen weglassen

Bei der Verarbeitung einer Klasse für die XML-Ausgabe erzeugt der Compiler standardmäßig Informationen über Member der Basistypen (Vorfahren) dieser Klasse. Die Unteroption f weist den Compiler an, keine Informationen für Basistypen zu erzeugen. Die folgende Tabelle zeigt, wie die Unteroption f die generierte .xml-Datei für die Datei test.cpp ändert.

test.xml ohne die Unteroption f:

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public">
        <members>
            <field name="id" type="int" visibility="private" />
        </members>
    </class>
    <class name="TDerived" visibility="public">
        <ancestor name="TBase">
            <fieldref name="id" visibility="private" />
        </ancestor>
        <members>
            <field name="name" type="char *" visibility="private" />
        </members>
    </class>
</file>

test.xml mit der Unteroption f:

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public">
        <members>
            <field name="id" type="int" visibility="private" />
        </members>
    </class>
    <class name="TDerived" visibility="public">
        <members>
            <field name="name" type="char *" visibility="private" />
        </members>
    </class>
</file>

-Zxp - Positionsinformationen erzeugen

Die Unteroption p weist den Compiler an, Attribute einzubeziehen, die die Datei und die Zeile jeder Deklaration beschreiben. Die folgende Tabelle zeigt die Datei test.xml mit der aktivierten Unteroption p.

test.xml mit der Unteroption p:

<?xml version="1.0" encoding="utf-8"?>
<file name="test.cpp">
    <class name="TBase" visibility="public" file="test.cpp" line="1">
        <members>
            <field name="id" type="int" visibility="private" file="test.cpp" line="2" />
        </members>
    </class>
    <class name="TDerived" visibility="public" file="test.cpp" line="5">
        <ancestor name="TBase">
            <fieldref name="id" visibility="private" />
        </ancestor>
        <members>
            <field name="name" type="char *" visibility="private" file="test.cpp" line="6" />
        </members>
    </class>
</file>

Siehe auch