2011-12-19 22 views
5

Piszę tłumacza mózgu w C, i mam trochę problemów z wykorzystaniem czegoś, do czego nie jestem przyzwyczajony. W brainfuck, przecinek (,) jest zasadniczo getchar(). Więc mam następujący kod:error: Etykieta może być tylko częścią oświadczenia

//This is just ptr 
static char *ptr; 

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

error: a label can only be part of a statement and a declaration is not a statement gcc rzuca się na mnie, gdy próbuję skompilować ten.

Wszelkie pomysły? (Przepraszam za to, nie tak obeznany z tym błędem)

+6

jest to wewnątrz instrukcji 'switch'? – Constantinius

+0

Pokaż więcej kodu użytkownika; i może dodać średnik ';' w linii w błąd. –

+0

Tak, to jest w przełączniku, myślę, że zostawiłem to. – MadPumpkin

Odpowiedz

7

wierzę znaczy

*ptr = getchar(); 

zamiast

ptr*=getchar(); 

ponieważ *= środki pomnożyć wartość po lewej stronie z wartości na po prawej stronie i przypisz ją do lewej wartości. Jednak chcesz uzyskać dereferencjęptr i zapisać wynik getchar w tej lokalizacji.


Poza tym kod kompiluje się perfekcyjnie z moją wersją gcc (jeśli Oświadczam command gdzieś), więc są oczywiście nie pokazuje nam kompletny przykład.

+0

Tak, mój błąd, naprawiłem to również w moim kodzie. Pokazuje ten sam błąd. – MadPumpkin

+0

ptr * = getchar() dałby inny błąd: 'error: niepoprawne operandy na binarne * (mają znak * i int)' Nie ten w pytaniu. – Karthik

+0

@Karthik: Dobra uwaga. Ale mogły być powiązane. W przeciwnym razie nie widzę błędu w przedstawionym kodzie. – bitmask

1

To był mój błąd całkowicie, wcześniej skomentowałem kod przed nim. Myślałem, że to kod powodujący błąd, ponieważ skomentowałem oba kody w tym samym czasie i nie powoduje tego błędu. Próbowałem jednak skomentować oba, a teraz rozumiem, dlaczego.

To było coś o PLIKU i korzystaniu z mojego wyszukiwania w innym przypadku.

+0

Gdybym mógł mieć nikiel za każdym razem, gdy napotkałem błąd składni C zawinięty jak świąteczny prezent w innym błędem składni, byłbym bardzo bogatym człowiekiem. C ma swoje i takie jego upadki. –