typeof ist eine GNU-C Erweiterung.
Es liefert den Typ einer Variablen:
An der Stelle könnte man natürlich auch "int" anstatt "typeof(a)" direkt hinschreiben. Aber man kennt den Typ nicht immer.Code:int a; // Definiere b als Objekt vom gleichen Typ wie a typeof (a) b;
Nehmen wir mal an, du willst ein Makro SWAP schreiben, das 2 Variablen tauscht:
Dann kannst du SWAP für alle Typen verwenden: int, unsigned int, float, char*, foo_t, was auch immer.Code:#define SWAP(a,b) \ do { \ typeof (a) __dummy = a; \ a = b; \ b = __dummy; \ } while(0)
typeof kannst du auch verwenden zum Casten oder in sizeof:
Allerdings ist sizeof (typeof (x)) gleichbedeutend mit sizeof (x)Code:typeof (foo) * pfoo = (typeof (foo) *) & foo;







Zitieren

Lesezeichen