Guru

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ Guru ] in KIDS
글 쓴 이(By): pictor (홍헌수)
날 짜 (Date): 1998년03월21일(토) 21시23분35초 ROK
제 목(Title): Re: [Q]C의 main() 함수


main()을 선언할때
void main()이런 식으로 하지 말고, int main(void), 또는 int main(int argc,
char *argv[])이런 식으로 하는 이유는, C 언어의 standard가 그렇게 하라고
하기 때문입니다.  C에도 standard가 있으므로, 되도록 standard를 따라서
coding하는 것이 portability같은 것을 생각할때 바람직하리라 생각합니다.
절대로 절댈로 main()을 void로 선언하지 마세요.  우리가 교통신호등을 지키
듯이 c program을 짤때도 이런 C의 standard를 지켜야 할 것이라 생각합니다.

main()이 return할때, main()이 성공적으로 끝났으면 0을 return하고, 어떠어떠한
이유로 인해 error가 발생하여 실패로 끝났을땐 1을 return하고 그렇게 하는데,
이것을 /관례/가 그렇기 때문에 그렇게 하는구나.. 하고 생각해도 되지만,
그런 관례가 왜 생겼느냐 하는 것에 대해선 전 이렇게 생각합니다.  무슨 일을
수행할때, 그일을 성공적으로 끝났으면 성공적으로 끝나게 된데 대해서 /이유/란
게 별로 중요하지 않습니다.  /잘 끝났으니 그것으로 끝이지요/.. 그러나 실패로
끝나게 되면 그렇게 실패로 끝나게 된 이유가 상당히 중요해집니다. 실패로
끝나게 된 이유로, /날씨가 안좋아서../, /마음이 내키지 않아서../, 또는
/그런 File이 없어서../, /그런 file을 지울려고 하는데 OS가 허락해주지 않아서../
등등.. 별의별 이유가 생길 수 있습니다.

성공은 unique하지만, 실패했을땐 그 경우가 unique하지 않다는 것입니다.
(음.. 설명하기 힘이드는군요.)  이런 것 하고 C의 함수를 비교해 보면..
만약에 어떤 함수의 return값이 보통 그 error를 표시하는 것이라면..
0은 성공, 나머지는 다 실패이다..  그 나머지 중에서 1은 /날씨가 안좋아서../
였기 때문이었고.. 2는..

점점 설명하기 힘드는군요. 아뭇튼.. 성공하면 0, 실패하면 0이 아닌다른
숫자를 return하게 하면 C coding이 훨씬 편해진다.. 하는 것입니다.

.....
그리고 아무쓸모없어 보이는 main()의 return value도 상당히 중요해지는 좋은
example은.. Makefile에서 입니다.  다음과 같은 Makefile를 가지고 test해보세요
a:
        false
        echo --------
b:
        true
        echo --------
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.