CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): zeo (ZeoDtr)
날 짜 (Date): 1994년02월08일(화) 08시11분15초 KST
제 목(Title): 최종호님 정답입니다.


최종호님. 완벽한 정답입니다.
어쩌면 싱거웠을 지도 모르겠네요.

자꾸 뱀다리를 다는 것 같지만 이 문제의 취지(?)에 대해 말하면요,
(저의 넋두리가 될 지도 모르겠습니다)

함수의 프로토타입은 반드시 선언해 두자...
필요한 헤더 화일은 반드시 include하자...
이런 거였습니다.

이런 문제는 반드시 덤벙대는 사람에게만 있는 건 아닙니다.
unix의 프로그래밍 환경은 참 거지같을 때가 많지요.
한 기계에서 죽치고 산다면 몰라도, 저같이 여러 기계에서 다 잘 돌아가는 (따라서
잘 컴파일되는) 코드를 써야 하는 사람에게는 참 귀찮은 게 많습니다.
위에 bonjovi님이 stdlib.h를 당연하다는 듯 include하셨는데, unix 머신중 오래된
것은 (여기에는 아마 gcc도 없을꺼야...) 아예 stdlib.h란게 없는 것도 있어요.
화일 못찾겠다는 에러가 났을 때의 그 황당함...
저는 열찌미 #ifdef #if... 이런 directive를 써서 땜빵을 하고 있지만, 간혹
그런 거에 열받아서 헤더 화일 사용을 아예 포기하고 그냥 프로토타입도 없는
함수를 마구 쓰는 사람들도 있어요. 특히, debugging 코드를 삽입할 때 그런 경우가
많은데 (썼다 지울꺼니까), 이것때문에 황당한 꼴을 당하는 경우도 있지요.
꼬와도 조심해야죠.
뭐, unix에서야 거-의 대부분 int가 32bit인 만큼 이 문제같은 황당한 꼴은
안당한다고 해도, 다음의 코드같은 오류를 범할 수 있습니다. 이것도 퀴즈로 낼
수도 있지만 너무 간단한 것 같아서...

CUT HERE==================
void
main()

{
    char *babo = "1.234";
    double dbl = atof(babo);
    printf("%f\n", dbl);
}
CUT HERE==================

제가 지금 글쓰고 있는 mips 기계에서는 이 프로그램의 출력이 -48.0000으로
나옵니다. 물론 뭐가 잘못됐는지는 알겠죠?
이런 사소한 것 때문에 수많은 프로그래머들은 잠을 못이룬다...

또 한가지. unix기계들 중에는 ANSI C를 아예 지원 안하는 놈들이 있어요.
버찌아찌가 말한 엉터리 컴파일러를 제외하고라도, sun같은 유명한 기계가 K&R만을
지원한다니...(제가 쓰는 sparcstation의 cc 이야깁니다) 그거 말고도 오래된
기계들은 많이 그렇다... 하여튼, 그래서 나같이 argument의 갯수나 순서를 잘
기억 못하는 인간은 쓸데없이 고생을 하게 된다. 아아, unix C는 실타...

난 그래서 요새 C++로 프로젝트를 하고 있습니다. 그래서 prototype같은 문제는
아예 컴파일러에서 잡아주기 때문에 행복한 나날들을 보내고 있지만...
이제 이 컴파일러는 (AT&T C++) 코아를 낸다던가 ("something like that..."이라는
아주 캐쥬얼한 메시지를 뿌리고), 미안해요, 요건 구현을 못했네요...라는 황당한
메시지를 내니, 나 원 참.
밥 먹고 살기 힘들다...

                                   ZZZZZZ
                                     zZZ  eeee  ooo
                                    zZ    Eeee O   O
                                   ZZZZZZ Eeee  OoO
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.