2012-03-30 16 views
5

Estoy tratando de pasar el valor de una macro C al preprocesador con la opción -Dmacro = value de gcc. Sin embargo, no hace lo que espero. Esto es lo básico de mi código:¿Por qué gcc no pasa el valor de macro desde la línea de comando?

#define T0 0 
#define T1 0 
#define T2 0 
#define T3 0 

int main(){ 

    int f[9]; 

    start(f[T0], f[T1], f[T2], f[T3]); 

    return 0; 
} 

Correr gcc -DT3=1 -E muestra el preprocesador no pretende sustituir el valor original de T3. ¿Qué me estoy perdiendo y cómo se puede pasar el valor correctamente?

+0

Acabo de toparme con este problema y me sorprendió un poco b/c Siempre pensé que la definición de la línea de comandos debería anular la definición en línea. Recuerdo vagamente que el compilador de Microsoft hace eso, pero desafortunadamente, no tengo acceso a uno durante un tiempo. Cualquier persona con MSVC puede probar eso y publicar la información, eso estará bien. – ysap

Respuesta

7

Afaik ese conmutador definirá una macro, pero su código lo sobreescribe nuevamente a 0. Quite eso define de su código o lo rodea con ifdef y debería estar bien.

+3

Rodeándolo con ifdef hizo el truco, gracias. – quetric

Cuestiones relacionadas