Die Querverweisliste wird mit der CROSS-REFERENCE-Option der MODIFY-LISTING-PROPERTIES-Anweisung angefordert.
Sie besteht aus folgenden Teilen:
Der FILETABLE-Teil enthält die Namen aller Dateien bzw. Bibliotheken/Elemente, die der Compiler als Quelle (Quellprogramm oder Include-Element) verwendet hat und ordnet diesen jeweils eine Nummer zu. Auf diese Nummern nehmen die anderen Teile der Querverweisliste Bezug.
Der PREPROCESSING-INFO-Teil enthält eine Liste der vom Präprozessor bearbeiteten Namen in
#include
- und#define
-Anweisungen (Makros, Include-Elementnamen etc.)Der TYPES-Teil enthält eine Liste der benutzerdefinierten Typen (typedefs, Klassen-, Struktur-, Union- und Aufzählungstypen)
Der VARIABLES-Teil enthält eine Liste der Variablen
Der FUNCTIONS-Teil enthält eine Liste der Funktionen
Der LABELS-Teil enthält eine Liste der Labels
Der TEMPLATES-Teil enthält eine Liste der Templates (nur in den Modi C++ V3, C++ 2017 und C++ 2020)
Die Namen sind in den Listen jeweils alphabetisch sortiert.
Der PREPROCESSING-INFO-, TYPES- und TEMPLATES-Teil sind in der Querverweisliste standardmäßig nicht enthalten und müssen mit PREPROCESSING-INFO=*YES, TYPES=*YES bzw. TEMPLATES=*YES explizit angefordert werden.
FILETABLE-Teil der Querverweisliste
******* XREF - LISTING ******** BS2000 C/C++ COMPILER 04.0B02 DATE:2023-04-02 PAGE: 1 FILETABLE SOURCENAME:*BS2000(MAINPROG) TIME=17:37:52 ___________________________________________________________________________________________ SOURCE FILE 0 = *BS2000(:2OSC:$TST30B.MAINPROG) INCLUDE FILE 1 = *LIBRARY-ELEMENT(:2OSL:$TSOS.SYSLIB.CRTE,STDIO.H(V04.3A10),S) INCLUDE FILE 2 = *LIBRARY-ELEMENT(:2OSL:$TSOS.SYSLIB.CRTE,IOBUF.H(V04.3A10),S) INCLUDE FILE 3 = *LIBRARY-ELEMENT(:2OSL:$TSOS.SYSLIB.CRTE,POSFILE.H(V04.3A10),S) INCLUDE FILE 4 = *LIBRARY-ELEMENT(:2OSL:$TSOS.SYSLIB.CRTE,STDIO.BS21.H(V04.3A10),S) INCLUDE FILE 5 = *LIBRARY-ELEMENT(:2OSL:$TSOS.SYSLIB.CRTE,STDIO.COMMON.H(V04.3A10),S) INCLUDE FILE 6 = *LIBRARY-ELEMENT(:2OSL:$TSOS.SYSLIB.CRTE,STDIO.BS22.H(V04.3A10),S) INCLUDE FILE 7 = *LIBRARY-ELEMENT(:2OSL:$TSOS.SYSLIB.CRTE,CGLOBALS.H(V04.3A10),S) INCLUDE FILE 8 = *LIBRARY-ELEMENT(:2OSL:$TSOS.SYSLIB.CRTE,IOBUF.H(V04.3A10),S) INCLUDE FILE 9 = *LIBRARY-ELEMENT(:2OSL:$TSOS.SYSLIB.CRTE,ERRNO.H(V04.3A10),S) INCLUDE FILE 10 = *LIBRARY-ELEMENT(:2OSC:$TST30B.PLAM.INCL,INCL1.H(*UPPER-LIMIT),S) INCLUDE FILE 11 = *LIBRARY-ELEMENT(:2OSC:$TST30B.PLAM.INCL.INCL2.H(*UPPER-LIMIT),S) ___________________________________________________________________________________________
Dateinummer in globalen Querverweislisten
In einer Querverweisliste, die mit dem globalen Listengenerator aus mehreren CIF-Dateien erstellt wurde (siehe Abschnitt „Steuerung des globalen Listengenerators“) wird die Dateinummer in der Form n(m) angegeben. n ist die fortlaufende Nummer der pro Übersetzungseinheit (= CIF-Datei) verwendeten Quell- und Include-Dateien (analog zur lokalen Querverweisliste, s.o.), m ist die Nummer der jeweiligen Übersetzungseinheit. Die Nummerierung der Übersetzungseinheiten beginnt mit 0.
PREPROCESSING-INFO-Teil der Querverweisliste
******* XREF - LISTING ******** BS2000 C/C++ COMPILER 04.0B02 DATE:2023-04-02 PAGE: 2 PREPRO SOURCENAME:*BS2000(MAINPROG) TIME=17:37:52 ___________________________________________________________________________________________ 56/12:5 *LIBRARY-ELEMENT(:2OSC:$TST30B.PLAM.INCL,INCL1.H(*UPPER-LIMIT),S) / include file 2%0 *LIBRARY-ELEMENT(:2OSC:$TST30B.PLAM.INCL,INCL2.H(*UPPER-LIMIT),S) / include file 3%0 ___________________________________________________________________________________________ '.'applied ':'def ':^'undef '%'included
TYPES-Teil der Querverweisliste
******* XREF - LISTING ******** BS2000 C/C++ COMPILER 04.0B02 DATE:2023-04-02 PAGE: 3 TYPES SOURCENAME:*BS2000(MAINPROG) TIME=17:37:52 ___________________________________________________________________________________________ a0000270 / struct of size 16 (0x10) std / namespace A / class of size 4 (0x4) ----------------- (1) 1/7:10 1/18.11 13/3.0 14/3.0 ----------------- (2) public baseclass of class 'B' i / member, signed int, private ----------------- (3) A / inline constructor( signed int ), public foo / member, inline function( void ) ret void, public B / class of size 8 (0x8) 1/7:11 A / baseclass, public i / member, signed int, private B / inline constructor( signed int ), public foo / member, inline function( void ) ret void, public ___________________________________________________________________________________________ '.'used ':'def '&'decl
Erklärung
(1) | Name und Beschreibung des benutzerdefinierten Typs, ggf. mit Angabe der Größe |
(2) | Jeweils von links nach rechts: 14/3.0 bedeutet z.B.: In Zeile 14, Spalte 3 des Quellprogramms mainprog (0) wird eine Variable vom |
(3) | Bei strukturierten Typen werden auch die Komponenten dieser Typen (jeweils eingerückt) beschrieben. Die Datenelemente von Strukturen, Klassen und Unions werden ausschließlich im TYPES-Teil |
VARIABLES-Teil der Querverweisliste
******* XREF - LISTING ******** BS2000 C/C++ COMPILER 04.0B02 DATE:2023-04-02 PAGE: 4 VARIABLES SOURCENAME:*BS2000(MAINPROG) TIME=17:37:52 ___________________________________________________________________________________________ a / class 'A' ------------------ (1) 7/3=10 7/3:10 13/14&0 20/3&0 ------------------ (2) aptr / automatic, pointer to class 'A', local in main( void ) ret signed int, init value = &a 13/6=0 13/6:0 21/3.0 b / class 'B' 7/3=11 7/3:11 14/14&0 22/3&0 bptr / automatic, pointer to class 'A', local in main( void ) ret signed int, init value = &b 14/6=0 14/6:0 23/3.0 i / member, signed int, member of class 'A' 3/10:10 5/21=10 i / member, signed int, member of class 'B' 3/10:11 5/21=11 ii / automatic, signed int, local in main( void ) ret signed int, init value = 1 11/7=0 11/7:0 16/18.0 ii / extern, signed int 5/12:%0 jj / extern, signed int 4/16:%0 jj / automatic, signed int, local in main( void ) ret signed int, init value = 2 12/7=0 12/7:0 17/18.0 string / automatic, pointer to char, local in main( void ) ret signed int, init value = "AbCdEfG" 9/9=0 9/9:0 18/18.0 x / param of constructor A::A, signed int 5/12:10 5/23.10 x / param of constructor B::B, signed int 5/12:11 5/23.11 xx / automatic, float, local in main( void ) ret signed int, init value = 1 10/9=0 10/9:0 19/18.0 ___________________________________________________________________________________________ '='write '.'read '*='indir-write '*.'indir-read '&'read-addr ':'def '%'decl ':%'extdecl '%%'use
Erklärung
(1) | Name, Speicherklasse und Datentyp der Variablen |
(2) | Jeweils von links nach rechts: 7/3:10 bedeutet z.B.: In Zeile 7, Spalte 3 des Include-Elements |
FUNCTIONS-Teil der Querverweisliste
******* XREF - LISTING ******** BS2000 C/C++ COMPILER 04.0B02 DATE:2023-04-02 PAGE: 5 FUNCTIONS SOURCENAME:*BS2000(MAINPROG) TIME=17:37:52 ___________________________________________________________________________________________ foo / public member of class 'B', inline function( void ) ret void -- (1) 6/11:11 22/5.0 -- (2) foo / public member of class 'A', inline function( void ) ret void 6/11:10 20/5.0 21/9.0 23/9.0 main / function( void ) ret signed int 7/5:0 A / public member of class 'A', inline constructor( signed int ) 5/6:10 7/3.10 5/26.11 B / public member of class 'B', inline constructor( signed int ) 5/6:11 7/3.11 ___________________________________________________________________________________________ '.'call ':'def '&'decl '%'extdecl ':^'forward '&.'read-addr
Erklärung
(1) | Name der Funktion, Geltungsbereich, Signatur (Typ der Parameter und Returntyp) und Speicherklasse; |
(2) | Jeweils von links nach rechts: 6/11:11 bedeutet z.B.: In Zeile 6, Spalte 11 des Include-Elements |