2011-12-19 17 views
5

Tôi đang viết một thông dịch viên giả trong C và tôi đang gặp một chút rắc rối với việc sử dụng những điều tôi không quen thuộc. Trong brainfuck, dấu phẩy (,) về cơ bản là getchar(). Vì vậy, tôi có đoạn mã sau:lỗi: Nhãn chỉ có thể là một phần của câu lệnh

//This is just ptr 
static char *ptr; 

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

gcc ném error: a label can only be part of a statement and a declaration is not a statement vào tôi khi tôi cố gắng biên dịch.

Bất kỳ ý tưởng nào? (Xin lỗi về vấn đề này, không nên quen thuộc với lỗi này)

+6

có nằm trong câu lệnh 'switch' không? – Constantinius

+0

Hiển thị thêm mã của bạn; và có lẽ thêm một dấu chấm phẩy ';' vào dòng lỗi. –

+0

Có trong chuyển đổi, tôi cho rằng tôi đã bỏ nó ra. – MadPumpkin

Trả lời

7

Tôi tin rằng bạn có nghĩa là

*ptr = getchar(); 

thay vì

ptr*=getchar(); 

*= phương tiện nhân giá trị ở phía bên trái với giá trị trên phía bên phải và gán giá trị này cho giá trị bên trái. Tuy nhiên, bạn muốn dereferenceptr và ghi kết quả của getchar vào vị trí đó.


Ngoài ra mã của bạn biên dịch hoàn toàn tốt đẹp với phiên bản của tôi về gcc (nếu tôi tuyên bố command nơi nào đó), vì vậy bạn rõ ràng là không cho chúng ta thấy một ví dụ hoàn chỉnh.

+0

Vâng, lỗi của tôi, tôi đã sửa nó trong mã của tôi ngay bây giờ. Nó cho thấy cùng một lỗi. – MadPumpkin

+0

ptr * = getchar() sẽ đưa ra một lỗi khác: 'lỗi: toán hạng không hợp lệ thành nhị phân * (có char * và int)' Không phải là lỗi trong câu hỏi. – Karthik

+0

@Karthik: Tốt. Nhưng chúng có thể có liên quan. Nếu không, tôi không thể thấy lỗi trong mã được trình bày. – bitmask

1

Đây là lỗi của tôi hoàn toàn, trước đây tôi đã nhận xét mã này trước đó. Tôi nghĩ rằng đây là mã gây ra lỗi do tôi bình luận cả hai mã cùng một lúc, và nó không gây ra lỗi này. Tuy nhiên tôi đã cố gắng bình luận cả hai, và bây giờ tôi hiểu tại sao.

Đó là điều gì đó về FILE và sử dụng tìm kiếm của tôi trong trường hợp khác.

+0

Nếu tôi có thể có một nickel cho mỗi lần tôi gặp phải một lỗi cú pháp C bọc như một món quà Giáng sinh bên trong một lỗi cú pháp khác, tôi sẽ là một người rất giàu có. C có của nó lên, và những thăng trầm của nó như thế này. –

Các vấn đề liên quan