C symbol table

Hallo,
vielleicht ist diese nicht die richtige Liste, aber vielleicht kann mir
trotzdem jemand helfen. Das Problem könnte auch jemand anders interessieren.

Von einem c program z.B:

/******************************/
/*!Das ist ein float*/
float myFloat;
/*!Das ist ein integer*/
int myInt;

main(void)
{
  do_Something();
}
/******************************/

möchte ich mir eine globale symbol table aufbauen die etwa folgende
Informationen beinhaltet.

name der Variable
addresse der Variable
type der Variable
beschreibung der Variable
andere metadaten, die würden dann aber Manuell eingetragen...

im oberen beispiel hätte ich z.B.

MY_SYMBOL mySymbolTable
{
{'myFloat',&myFloat,'float','Das ist ein float'};
{'myInt',&myInt,'int','Das ist ein int'};
}

die liste der symboleNamen kann ich z.B. mit "nm" Befehl holen, die addresse
kann ich leicht von Name der Variable herholen mit dem &operator, was mir
fehlt ist den typ der Variable, gibt es vielleicht da eine directive?
Und was mit der (doxygen style) Beschreibung?
Ich möchte das ganze möglichst automatisiert haben, um Fehler zu vermeiden.

Ich danke euch schon im vorraus für jeden TIP

Diti

p.s.: natürlich wird das ganze unter Linux gemacht mit gcc & Co.

Hallo Diti,

ich denke mit Compiler alleine geht das nicht. Ich habe ein wenig mit der
GCC-Erweiterung "typeof()" gespielt, aber nichts rechtes gefunden. Wenn du
C++ verwendest, dann koenntest du typeid() verwenden.

Ich denke dass Programme wie exuberant ctags oder cscope eventuell das sind
was du suchst. ctags liefert dir aber nur symbole mit external linkage
(also "globale Variabeln").

z.B:
thomas(a)grummel:/tmp$ ctags -x test.c
i variable 4 main.c int i;
main function 8 main.c int main(void)
u8 variable 6 main.c uint8_t u8;
ui variable 5 main.c unsigned int ui;

HTH
Thomas

> was mir fehlt ist den typ der Variable, gibt es vielleicht da eine
> directive? Und was mit der (doxygen style) Beschreibung?
> Ich möchte das ganze möglichst automatisiert haben, um Fehler zu
> vermeiden.

Hallo Diti,

ich denke mit Compiler alleine geht das nicht. Ich habe ein wenig mit der
GCC-Erweiterung "typeof()" gespielt, aber nichts rechtes gefunden. Wenn du
C++ verwendest, dann koenntest du typeid() verwenden.

Ich denke dass Programme wie exuberant ctags oder cscope eventuell das sind
was du suchst. ctags liefert dir aber nur symbole mit external linkage
(also "globale Variabeln").

z.B:
thomas(a)grummel:/tmp$ ctags -x test.c
i variable 4 main.c int i;
main function 8 main.c int main(void)
u8 variable 6 main.c uint8_t u8;
ui variable 5 main.c unsigned int ui;

HTH
Thomas

Hallo Thomas,
ctags tut mir schon weiterhelfen und ist was ich suchte, mir fehlt nur noch
den comment (Beschreibung der Variable) aber ohne kann ich momentan
überleben.

Danke
Diti