Estoy tratando de hacer algo como lo siguiente;¿Existe una directiva de preprocesador GCC para verificar si el código se está compilando en una máquina de 64 bits?
#ifdef 64-bit
#define DECIMAL_FORMAT %ld
#else
#define DECIMAL_FORMAT %d
#endif
.
intptr_t d;
.
printf(“Some message with DECIMAL_FORMAT in the middle of it\n”, d);
La variable 'd' siendo del tipo 'intptr_t' necesidades '% d' especificador de formato en las máquinas de 32 bits y especificador de formato '% ld' en máquinas de 64 bits. Estoy buscando una solución para poder compilar el código tanto en máquinas de 32 bits como en máquinas de 64 bits sin hacer cambios en la línea de comando de GCC o el código fuente.
Estoy de acuerdo con su filosofía general, pero tenga en cuenta que no debe depender de punteros que encajen en un largo. En Windows de 64 bits, no lo hacen (http://msdn.microsoft.com/en-us/library/s3f49ktz(VS.71).aspx). Para los indicadores, "% p" es la forma correcta (como señaló Fred Larsen). –