[ 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 |