typedef und Datentyp Unterscheidung
-
Guten Morgen,
ich habe eine einfache Frage auf die es hoffentlich auch eine einfache Antwort gibt...
Kann man zur Laufzeit herausfinden, mit welchem Typen eine Variable deklariert wurde? Und speziell: Angenommen man hat eine Variable vom Typ unsigned char und eine Variable vom Typ uint8_t. uint8_t ist ein typedef von unsigned char. Wie kann man nun herausfinden, ob die Variable als unsigned char oder als uint8_t deklariert wurde? Geht das überhaupt?
Viele Grüße
Chris
-
Ja, das geht: Guck im Code nach.
Bei VS kannst Du z.B. F12 drücken und schwups bist Du beim der Deklaration.
Simon
-
theta schrieb:
Ja, das geht: Guck im Code nach.
Bei VS kannst Du z.B. F12 drücken und schwups bist Du beim der Deklaration.
Simondie frage bezog sich aber auf die laufzeit.
den typen einer variable zur laufzeit kann man mithilfe von typeid herausfinden.
#include <typeinfo> int main() { int a; std::cout << typeid(a).name(); //ausgabe -> int }mehr dazu: http://www.cplusplus.com/reference/std/typeinfo/type_info/
ob es jedoch möglich ist zu unterscheiden ob es "getypedeft" wurde oder nicht weiß ich nicht... ich kanns mir aber eigentlich nicht vorstellen.
-
Revo schrieb:
ob es jedoch möglich ist zu unterscheiden ob es "getypedeft" wurde oder nicht weiß ich nicht... ich kanns mir aber eigentlich nicht vorstellen.
Nein, geht nicht.
typeidholt sich den Typ. Eintypedeferstellt allerdings kein neuer Typ sondern nur ein Synonym. Ob es vielleicht eine veränderte Rückgabe beiname()geben könnte, weiss ich nicht, da die Rückgabe nicht standardisiert ist. Es ist ja sogar möglich, dass hier ein Multibyte-String zurückgegeben wird.Grüssli
-
Hallo ChBrown,
nein, zwischen einem (bzw. mehreren) typedef und dem eigentlichen Datentypen kann man nicht unterscheiden (da diese einfach nur Alias-Namen sind).
s.a. http://www.c-plusplus.net/forum/viewtopic-var-p-is-1843605.html#1843605