프린세스 다이어리

[C/C++] system("pause") 커맨드를 사용하면서 만난 에러와 새로 알게 된 것 정리 본문

C, C++

[C/C++] system("pause") 커맨드를 사용하면서 만난 에러와 새로 알게 된 것 정리

개발공주 2021. 9. 22. 12:00
728x90
#include <stdio.h>  

int main(void) {
    printf("hellooww world\n");
    system("pause"); 
    return 0;
}

 

위와 같은 코드를 실행해 보았더니 다음과 같은 에러가 발생했다.

main.c:6:5: error: implicit declaration of function 'system' is invalid in C99
      [-Werror,-Wimplicit-function-declaration]
    system("pause");
    ^
1 error generated.

이 문제를 해결하기 위해 구글링 한 결과, stdio에는 system이라는 함수가 정의되어 있지 않다고 "#include <stdlib.h>"를 추가하라고 하길래 그렇게 따라 했다.

 

그랬더니 다른 에러가 나는 것이었다. 

 

hellooww world
sh: pause: command not found

아.. 세팅 엄청 시간 걸린다. 구글링 해봤더니 한 답변에서 pause는 윈도우에서만 사용 가능한 command라고 하고, 기본적으로 리눅스에서는 지원하지 않는 command라고 한다. 

 

그런데 조금 더 알아보았더니, 애초에 system("pause")라는 커맨드를 사용하는 것은 직접적으로 윈도우 커맨드 프롬프트에 타이핑해서 애플리케이션을 멈추게 하는 것과 다름없다고, 단지 첫 코딩 공부를 하는 초심자들이 output을 확인할 수 있도록 하는 목적만으로 호출하기에는 너무 무거운 커맨드라고 한다. 그래서 getchar() 정도로 충분히 그 역할을 대체할 수 있다고 했다. 

 

그래서 코드를 수정해보았다.

 

#include <stdio.h>  

int main(void) {
    printf("hellooww world\n");
    // system("pause"); 
    getchar();
    return 0;
}

 

결과는 원하는 대로 잘 나왔다. 결과물을 확인했으니, 여기서 엔터를 치면 다시 처음으로 돌아가 프로그램을 실행할 수 있다.

 

728x90
Comments