Typen Speichern?



  • ich hab folgendes vor:

    Ein Tags Table welcher den typ des Tag enthält:

    typrdef struct {
    
      char acName[100];
    
      type <--- wie definier?
    
    } MYTAG;
    
    static MYTAG TABLE[]={
    
     {"Hallo",double}, //<-- sowas möglich 
     {"Welt", int},
     ....
    
    };
    


  • in C ist so etwas nicht möglich (ohne Macros jedenfalls nicht). Du kannst keine Datentypen speichern und so etwas wie typeof sind nur Erweierungen von manchen Compilern.

    In solchen Fällen verwende ich unions und speichere mir separat den Typ und/oder arbeite mit void* Pointern (alloziere erstaml mit malloc) und merke mir die Größe des Datentyps.

    Siehe http://library.gnome.org/devel/gtk/stable/gtk-Types.html
    Ich hab in meiner Arbeit eine ähnliche Lösung implementiert.



  • ^^ das geht, nur nicht mit reservierten schlüsselwörtern. mach dir z.b. ein 'enum'

    enum types
    {
      T_INT,
      T_DOUBLE,
      ...
    };
    

    🙂



  • etwas genauer:

    enum type
    {
      t_char,
      t_int,
      t_double
    };
    
    struct variant
    {
      enum type type;
      union value
      {
         char c;
         int i;
         double d;
      } value;
    };
    
    struct variant v[] = 
    {
      {t_char, 'a'}, 
      {t_int, 8}, 
      {t_double, 12.345}
    };
    

    🙂



  • ne hab mich falsch ausgedrückt sorry, es geht nich darum den gleichen typ über eine variable zu verewalten via union, sonder einfach nur den variablen-Typ nich den wert selber zu speichern...



  • BorisDieKlinge schrieb:

    einfach nur den variablen-Typ nich den wert selber zu speichern...

    Variablentypen sind keine Werte irgendeines Typs.

    Anders ausgedrückt: Typen existieren zur Laufzeit gar nicht mehr


Log in to reply