Tôi đang viết một số mã C và trong mã của tôi, tôi có hai vòng lồng nhau. Trên một điều kiện cụ thể, tôi muốn break
ra khỏi vòng lặp bên trong và continue
vòng ngoài. Tôi đã cố gắng để đạt được điều này bằng cách sử dụng một nhãn ở cuối trên mã vòng lặp bên ngoài và, trên điều kiện, goto
nhãn đó. Tuy nhiên gcc
đưa ra một lỗi mà tôi không thể có nhãn ở cuối câu lệnh ghép. Tại sao không?Trong C tại sao bạn cần một tuyên bố sau một nhãn goto?
Lưu ý 1: Đây không phải là tuyên bố switch
và rằng câu hỏi đã được trả lời elsewhere.
Lưu ý 2: Đây không phải là câu hỏi về phong cách và tôi có nên hay không nên sử dụng các câu lệnh goto
hoặc biến điều kiện để thay thế.
EDIT: Người dân đã yêu cầu một ví dụ và tôi có thể cung cấp cho một ví dụ hơi dễ dãi kiểm tra nếu một mảng là một mảng con của mảng khác
int superArray[SUPER_SIZE] = {...}, subArray[SUB_SIZE] = {...};
int superIndex, subIndex;
for (superIndex=0; superIndex<SUPER_SIZE-SUB_SIZE; superIndex+=1)
{
for (subIndex=0; subIndex<SUB_SIZE; subIndex+=1)
if (superArray[superIndex+subIndex] != subArray[subIndex])
goto break_then_continue;
// code that executes if subArray is a sub array
break_then_continue:
}
bạn có thể cung cấp một chương trình nhỏ mà tái tạo thông báo lỗi bạn nhận được? – sarnold
chúc may mắn và xem ra cho velociraptors – wim