Se define en /usr/include/stdint.h
:¿Qué es intptr_t, es un tipo para entero o puntero?
typedef long int intptr_t;
se supone que debe ser un tipo de número entero o un puntero?
Se define en /usr/include/stdint.h
:¿Qué es intptr_t, es un tipo para entero o puntero?
typedef long int intptr_t;
se supone que debe ser un tipo de número entero o un puntero?
Es un tipo entero con signo que es lo suficientemente grande como para contener un puntero.
Vale la pena señalar que la parte del puntero de espera mide que probablemente tendrá un tamaño diferente en las plataformas de 32 y 64 bits ... – Goz
puntero s/a/cualquier puntero/ – ninjalj
Sólo por curiosidad: ¿por qué es necesario tener una versión firmada y sin firmar de [u] intptr_t? – JohnTortugo
Es un tipo entero con signo que garantiza que puede contener un tipo void*
.
¿Y por qué también hay [u]intptr_t
? Porque:
Cualquier puntero válido para anular se puede convertir en
intptr_t
ouintptr_t
y volver sin ningún cambio en el valor. El estándar de C garantiza que un puntero a vacío se puede convertir desde o hacia un puntero a cualquier tipo de objeto y viceversa y que el resultado debe ser igual al puntero original. En consecuencia, se permite convertir directamente desde un punterochar *
auintptr_t
en las implementaciones que admiten eluintptr_t
.
¿De dónde es esto citado? – Yotam
Me tienes. Aquí: https://www.securecoding.cert.org/confluence/display/c/INT36-C.+Converting+a+pointer+to+integer+or+integer+to+pointer –
@Chris Lutz, ¿cómo? 'man intptr_t' no aparece nada. –
Creo que hay una página de manual para 'stdint.h'. Y siempre está Google. –