Question 2.14

Come posso determinare l'offset in byte di un campo all'interno di una struttura?


Il C ANSI definisce il macro offsetof(), che dovrebbe essere utilizzato quando e` disponibile; vedere <stddef.h>. Se non c'e` una possibile implementazione e`

	#define offsetof(type, mem) ((size_t) \
		((char *)&((type *)0)->mem - (char *)(type *)0))

Questa implementazione non e` portabile al 100%; alcuni compilatori possono legittimamente rifiutare di accettarla.

Vedere domanda 2.15 per un suggerimento per l'uso.

Riferimenti: ANSI Sez. 4.1.5
ISO Sez. 7.1.6
Rationale Sez. 3.5.4.2
H&S Sez. 11.1 pp. 292-3


Leggere di seguito: prev prossima su cima


Questa pagina e` di Steve Summit // Copyright 1995 // mail feedback