goto문은 전역 변수와 같이 사용을 자제하고 있으나, 때에 따라서는 복잡한 제어문을 제거하거나(빠저 나가거나?) 흔히 반복되는 코드 블록을 공유하는데 goto문을 사용할 수 있다.
C/C++로 작성하는 임베디드 시스템 프로그래밍(마이클 바, 한빛미디어)
원제 : Programming Embedded Systems in C and C++
크게 복잡하지 않은 코드는 함수로 만들지 않고 goto로 처리 한다는 것이죠...
함수를 100번 호출하는 코드를 비교해 봅시다.
// 함수 호출
#include <stdio.h>
void print()
{
printf("function");
}
void main()
{
int i;
for(i=0; i<100; i++)
print();
printf("end");
}
// goto 사용
#include <stdio.h>
void main()
{
int i=0;
loop:
if(i>100)
goto end;
i++;
goto print;
print:
printf("function");
goto loop;
end:
printf("end");
}
나름대로 최적화 시킨 goto를 사용한 코드인데요...
전 그냥 함수 호출 할랍니다...
VC에서 릴리즈모드로 컴파일 해봤는데 코드 크기는 똑같았습니다.
아마도 이것은 컴파일러 최적화 때문에 같은 코드를 생성해서 그런거 같구요.
실제로는 goto가 함수보다는 간단하게 작동(PC만 변경 시켜주면 되니까)하니까 임베디드 시스템에 쓰이는 컴파일러는 아마도 코드 크기가 줄어들것 같네요...
댓글
댓글 리스트-
작성자코더스 작성자 본인 여부 작성자 작성시간 04.04.07 "복잡한 제어문을 제거하거나"란 말을 빠저나간다고 생각했는데 그게 맞나보네... 형님 땡큐요^^
-
작성자스타 작성시간 04.04.07 그래도 goto문은 안쓰는게 좋치. goto문을 쓸정도라면 알고리즘에 문제가 생긴것이 아닐까? goto문은 굳이 쓰는 경우라면 C같은 제어가 위에서 아래로 되는 순차적언어가 모듈화 시키거나 전체 제어 흐름을 변경하고 플때 가끔 사용하는 경우가 있지 않을까 싶다. 어셈블에서 goto문을 사용할 수 밖에 없는 의미를
-
작성자스타 작성시간 04.04.07 생각해보면 쉽게 이해가 될 듯 하네 친구
-
작성자코더스 작성자 본인 여부 작성자 작성시간 04.04.07 느끼하게 친구~ 친구~ 할래?
-
작성자스타 작성시간 04.04.07 그랴 프랜드야