아두이노 goto 예제

고토에 정말 아무 문제가 없습니다. 이마귀 당신의 오류는 그것을 사용하지 않는 단지 표시입니다. 당신의 시간을 주셔서 감사합니다, 나는 그것이 작동하지 않은 이유를 알고 필요 goto를 사용하는 데 관심이 없습니다. 위에서 언급 했듯이, goto의 사용은 일반적으로 권장 하지 않습니다. 그러나, 주의와 함께 사용하는 경우, goto는 특정 프로그램을 단순화 할 수 있습니다. goto의 한 가지 중요한 사용 사례는 루프 또는 논리 블록에 대해 깊이 중첩된 경우 를 벗어나는 것입니다. 다음은 점프 문이 동일한 함수에 있어야 하며 동일한 함수에서 하나의 문 앞에 나타날 수 있습니다. goto 다음의 식별자 이름 집합에는 고유한 이름 공간이 있으므로 이름이 다른 식별자를 방해하지 않습니다. 레이블을 다시 선언할 수 없습니다.

자세한 내용은 네임 스페이스를 참조하십시오. 고토를 사용하지 않는 것이 좋습니다. 무조건 뛰어다니기보다는 논리적 구조에 충실하십시오. 별도의 함수 nsr을 만들고 goto 대신 사용하려고 합니다. while 루프는 while 문 뒤에 지정된 조건이 true인 한 {} 내에서 코드를 실행하기 위한 것입니다. 예를 들어 다음 코드는 루프를 종료하기 전에 “Hi”를 세 번 인쇄합니다. 먼저 선에 레이블을 지정하는 방법을 예로 들어 보겠습니다. 첫 번째 줄(int x = 아날로그Read(일부_핀);) 아래 루프 함수에는 레이블 판독이 있습니다. 세 번째 줄(지연(x);) 레이블 시작 지연이 있습니다.

두 번째 줄(직렬USB.println(x);) 레이블이 없습니다: IDE의 버전 1.6.4에서 goto가 강조 표시되고 항상 사용할 수 있습니다. 나는 질문 또는 두 가지가; 변수를 초기화하면 특정 메모리 양을 할당하므로 문 레이블이 할당하는 메모리 수는 몇 바이트입니까? 둘째, 우리는 프로그램에서 수많은 goto 문을 활용하는 경우, 그 프로세서의 성능을 지연 것인가? 이 예제에서 goto 문은 컨트롤을 i가 5일 때 정지라는 점에 전송합니다. 고토가 “앞으로 나아갈” 필요는 없습니다. 그것은 “뒤로”갈 수 있습니다. 예를 들어, 다음 프로그램은 영원히 “5”를 인쇄 (왜?) : 주위를 점프하는 것은 일부 언어, 특히 내가 좋아하는 어셈블리 중 하나에 매우 중요합니다. 그러나 그것은 실제로 당신이 거의 발생하지 않습니다 매우 특별한 경우 외부 C ++의 방법이 아니다. goto 문이 잘 작동 할 것 같은 느낌이 들면 일반적으로 잠시 앉아서 지금까지 프로그램을 재고하는 경우가 있습니다. 물론 당신은 항상 호기심에 조금 탐구하는 goto와 함께 놀 수 있습니다 그냥 일반 C ++ 프로그램에서 정말 사용할 것으로 예상되지 않는다는 것을 알고.

레이블은 함수 내의 코드 줄에 이름을 지정합니다. 줄이 시작되기 전에 이름을 작성한 다음 콜론(:)을 작성하여 줄에 레이블을 지정할 수 있습니다. goto 키워드를 사용하면 프로그램 흐름이 동일한 함수 내의 어느 곳에서나 레이블이 지정된 줄로 전송할 수 있습니다. 아래 코드는 goto를 좋아한다면 멋지게 보일 수 있지만이 무조건 제어 흐름은 높은 수준의 언어로 바보입니다. 점프는 어셈블리로 제한되어야 합니다. 당신이 하지 말아야 할 한 가지는 루프에 goto: 실제로 goto 1.6.4에서 강조 표시 됩니다., 잘못 된 색상으로 경우에.