본문으로 바로가기

[오토핫키] 7강 레이블과 레이블이동(goto, gosub)

category 언어/AUTOHOTKEY 2020. 3. 11. 14:50

오토 핫키에서는 특정 구간을 나누는 레이블이라는 게 존재합니다.

Label:
코드 내용
return

레이블은 : 한개만 사용합니다.

코딩을 할때 하드코딩과 중복 코드는 되도록 안 해야 됩니다.

Label을 사용해서 모듈화를 할 수있고 함수를 이용해 모듈화를 할수 있지만 

이번에는 라벨을 알아보겠습니다.

 

일단 메시지 박스를 보내는 레이블을 2개 만들어보겠습니다.

Label1:
msgbox, Label1 실행
return

Label2:
msgbox,Label2 실행
return

Label1을 실행하게 되면 Label1의 메시지 박스가 나타나게 됩니다.

Label2를 실행하게 되면 Label2의 메시지 박스가 나타나게 됩니다.

그러면 해당 레이블로 이동하기 위해 사용하는 방법은 2가지가 있습니다.

 

goto, Label1

Label1으로 이동하라는 뜻입니다.

Label1의 내용이 실행되고 보냈던 곳으로 돌아가지 않고 return을 만나 끝나게 됩니다.

goto를 사용하게 되면 이전 코드로 돌아가지 않고 문장이 끝나게 됩니다

 

gosub, Label2

Label2으로 이동하고 완료되면 원래대로 돌아오라는 뜻입니다.

Label2의 내용이 실행되고 보냈던 곳으로 다시 돌아오게 됩니다

 

Start:
goto, label1
goto, label2
return

label1:
msgbox, label1 실행
return

label2:
msgbpx, label2 실행
return

위에 코드를 실행하게 되면 출력 결과는

메시지 박스로 label1 실행이 출력되고 끝입니다.

goto는 label1 레이블로 보내고 return을 만나 문장이 끝났기 때문입니다.

 

Start:
gosub, label1
gosub, label2
return

label1:
msgbox, label1 실행
return

label2:
msgbpx, label2 실행
return

gosub을 사용하면 출력 결과는

메시지 박스로 label1 실행, label2 실행이 출력됩니다.

label1으로 갔다가 다시 돌아와 Start레이블이 계속 실행되며 

gosub, label2를 만나 코드를 실행하게 됩니다.

 

두 개의 차이점을 알고 사용한다면 프로그램을 보기 좋게 짤 수 있습니다.