2012-10-12 88 views
5

Duplicar posible:
How to stringify an expression in CCómo realizar el cálculo en el preprocesador con stringification en C

espero poder encontrar alguna solución de mi problema aquí.

Quiero agregar los números hexadecimales definidos en ADD1 y necesito poner lo mismo en *str en forma de cadena.

Esto es sólo un ejemplo, para probar su posibilidad primero. De hecho, soy haciendo lo mismo en un archivo de encabezado.

#include <stdio.h> 


#define XMK_STR(x)  #x 
#define MK_STR(x)  XMK_STR(x) 
#define ADD1 0x6000+0x10 

main() 
{ 
     char *str = "START " MK_STR(ADD1) "\n"; 
     printf(str); 
} 
+1

¿Desea una cadena "0x6010"? – Ancurio

+0

El requisito de @ouah es similar, pero tengo que hacer lo mismo en el archivo de encabezado en realidad. – linuxexplore

+0

@Ancurio Sí, quiero "0x6010" – linuxexplore

Respuesta

4

No. No se puede realizar cálculos utilizando preprocesador. Es esencialmente un sustituto de texto.

Puede usar sprintf() e imprimir el resultado agregado en str para que pueda usar ADD1.

+1

Sí, para que sea explícito, sprintf no será parte del preprocesador. Se ejecutará solo cuando se ejecute el compilador que está después del preprocesador – fayyazkl

+0

Así que eso es significa que no puedo hacer esto en el archivo de encabezado? Estoy buscando algún truco si hay ;-) – linuxexplore

+1

sí, no se puede hacer eso. Sin embargo, puedes probar algo como http://ideone.com/CHQLA o http://ideone.com/1VNUs. –

Cuestiones relacionadas