2011-11-13 16 views
5

Estoy usando macros como se menciona a continuación en mi programa C para desarrollar la aplicación POS. Cuando estoy compilando este código me sale '\' en error del programa. ¿Alguien puede ayudarme a resolver esto?perdida '' en el programa de error al compilar

#define FF(a, b, c, d, x, s, ac) \ 
    {(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \ 
    (a) = ROTATE_LEFT ((a), (s)); \ 
    (a) += (b); \ 

     } 
+0

El mensaje de error debe hacer referencia a un número de línea. ¿Señala la definición de macro (y si es así, qué línea), o a una invocación de la macro? ¿Cómo se ve la invocación? ¿Puede mostrarnos un pequeño archivo fuente completo que demuestre el problema? ¿Cada '' 'está al final de la línea, sin espacios en blanco al final? (Lo anterior se compila sin error para mí.) –

+3

@itsnikki - No debe corregir el código en la pregunta después de encontrar la solución, ya que eso hace que las respuestas parezcan divertidas. –

+0

@BoPersson: Según el comentario del OP, la línea en blanco no está en el código que causa el problema, y ​​con la línea en blanco, probablemente no producirá ese mensaje de error. –

Respuesta

7

Retire la línea antes del soporte de cierre.

(a) += (b); \ 
      <---- 
} 

Además, como una cuestión de estilo, al menos debe alinear las barras diagonales inversas.

+0

eso podría no ser el problema. En realidad, esa línea se agregó aquí solo ... no había espacio en el código. – itsnikki

+0

@itsnikki Me tomé el tiempo para ejecutar el código. Se compila cuando eliminas esa línea. Quizás el error está en otra parte? – cnicutar

3

La mayoría de los compiladores le dan cierta forma de obtener la forma preprocesada de su código. Con gcc es gcc -C -E source.c > source.i; deberías mirar esa forma. Bajo Linux, a veces hago:

gcc -C -E source.c | grep -v '^#' | indent > source.i 
gcc -Wall -c source.i 

El grep -v '^#' es la eliminación de la numeración de líneas generado. Luego miro source.i en las ubicaciones de error y entiendo lo que estaba mal con mis macros.

Cuestiones relacionadas