2011-12-19 10 views
5

Escribo un intérprete de brainfuck en C, y estoy teniendo un poco de problemas con el uso de algunas cosas a las que no estoy acostumbrado. En brainfuck, una coma (,) es esencialmente getchar(). Así que tengo el siguiente código:error: Una etiqueta solo puede ser parte de una declaración

//This is just ptr 
static char *ptr; 

switch (command) 
{ 
    case ',': 
    *ptr=getchar(); // Here's the code causing error 
    break; 
} 

gcc arroja error: a label can only be part of a statement and a declaration is not a statement de mí cuando intento compilar esto.

¿Alguna idea? (Lo siento por esto, no tan familiarizados con este error)

+6

¿está dentro de una instrucción 'switch'? – Constantinius

+0

Muestra más de tu código; y quizás agregue un punto y coma ';' en la línea por error. –

+0

Sí, está en un interruptor, supongo que lo dejé. – MadPumpkin

Respuesta

7

Creo que quiere decir

*ptr = getchar(); 

en lugar de

ptr*=getchar(); 

Debido *= medios multiplicar el valor en el lado izquierdo con el valor de el lado derecho y asignar esto al valor de la izquierda. Sin embargo, desea desreferenciaptr y escribir el resultado de getchar en esa ubicación.


Aparte de que su código se compila perfectamente bien con mi versión de gcc (si Declaro command en alguna parte), por lo que son, obviamente, no que nos muestra un ejemplo completo.

+0

Sí, mi error, lo arreglé en mi código también ahora. Muestra el mismo error. – MadPumpkin

+0

ptr * = getchar() daría un error diferente: 'error: operandos inválidos a binario * (tiene char * e int)' No es el que está en la pregunta. – Karthik

+0

@Karthik: Buen punto. Pero pueden haber estado relacionados. De lo contrario, no puedo ver un error en el código presentado. – bitmask

1

Este fue mi error por completo, anteriormente había comentado el código anterior. Pensé que este era el código que causaba el error debido a que comenté ambos códigos al mismo tiempo, y no causaba este error. Sin embargo, traté de comentar los dos, y ahora entiendo por qué.

Era algo sobre FILE y el uso de mi búsqueda en un caso diferente.

+0

Si pudiera tener un centavo por cada vez que encontré un error de sintaxis C envuelto como un regalo de Navidad dentro de otro error de sintaxis, sería un hombre muy rico. C tiene su up, y sus downs como este. –

Cuestiones relacionadas