En una aplicación que mantengo, hemos encontrado un problema con las limitaciones del descriptor de archivo que afecta a stdlib. Este problema solo afecta a la versión de 32 bits de la lib estándar.#ifdef para plataforma de 32 bits
He ideado una solución para mi código y me gustaría implementarlo, pero solo cuando compilo para el ejecutable de 32 bits. ¿Qué símbolo del preprocesador puedo #ifdef para determinar si el código se está compilando para un objetivo de 32 o 64 bits?
EDITAR
Lo sentimos, no mencionó, el código es multiplataforma, Linux, Windows, Solaris y algunos otros sabores de Unix, en su mayoría utilizando GCC para su compilación. ¿Algún estándar de facto que pueda usar multiplataforma?
EDIT 2
he encontrado algunas definiciones "__ILP23" y "__LP64" que parece que pueden funcionar ... una discusión here explica el fondo en la plataforma UNIX. Alguien tiene alguna experiencia con el uso de estas define? ¿Esto va a ser útil?
Depende de la plataforma. Diferentes sistemas operativos usan #defines diferentes. Si tienes suerte, Boost tiene una envoltura portátil escondida en alguna parte. De lo contrario, solo deberá verificar los específicos de la plataforma. ¿A qué plataforma estás corriendo por cierto? – jalf
Se editó la pregunta ... el código se dirige principalmente a Windows, Solaris y Linux, y las partes también se ejecutan en AIX y HP-UX. – veefu
Solo una idea: # if sizeof (int) == 64 – mmmmmmmm