RETURN 0; 값에 대하여
CRT(C Run Time) 프로그램(일반 C프로그램이라고 보시면 됩니다)에서 종료가 될 때는 내부적으로 exit() 라는 함수가 호출 됩니다. C/C++ 프로그램 내부적으로 exit(0); 등으로 명시적으로 호출 할 수도 있습니다.
이 exit()라는 함수는 int형의 인자를 가지는데 종료 코드를 넘길 수가 있습니다.
반면 main함수에서 return은 프로그램의 종료를 한다는 면에서 의미를 가지는데요,
반환값이 종료 코드의 값이 된다는 것이지요. 그런 면에서 일반 함수에서의 반환값과 의미가 약간 다릅니다.
위의 질문한 것을 봤을 때는 main() 함수에서의 반환 값을 물어보신 것 같습니다.
일반함수에서 반환값은 프로그램 내부에서 값을 전달하기 위한 용도로 사용을 하지만
main함수에서 반환값은 다른 프로세스와 커뮤니케이션을 하기위한 의미가 있습니다.
보통 성공적으로 프로그램이 종료되었을 때 0을 반환하고,
실패했을 때 0이 아닌 값(특정 코드)를 반환을 하게 짜는 것이 보통입니다.
어떤 프로그램에서 프로그램 실행을 할 수 있는 system() 이라는 표준 라이브러리 함수를 이용해서 프로그램을 실행했을 경우 0을 리턴을 받으면 보통 프로그램이 성공적으로 실행이 되었을 것이라고 생각을 합니다.
사실 표준 라이브러리 헤더 중 <stdlib.h>에
아래와 같이 EXIT_SUCCESS 와 EXIT_FAILURE라는 매크로 상수값이 정의 되어 있습니다.
/* Definition of the argument values for the exit() function */
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
0과 1같은 매직 넘버를 사용하는 것보다 위의 정의된 매크로 이름을 사용하시는 것을 권장합니다.
<main.cpp>
#include <stdlib.h>
int main() {
// 어떤 작업 수행
// 성공적으로 프로그램이 종료 된다면...
return EXIT_SUCCESS; // 사실 return 0; 과 같다.
// 프로그램이 비정상적으로 종료 된다면..
return EXIT_FAILURE; // 사실 return 1; 과 같다.
}