이식성 있는 프로그램을 만들려면
글쓴이: gurumong / 작성시간: 일, 2007/03/25 - 5:33오후
안녕하세요!
저는 프로그래밍 초보입니다
책에 있는 간단한 문제를 푸는 정도의 수준을 떠나서
남에게 만들었다고 자랑정도!? 할수있는 완성도 높은 프로그램을 한번 만들어 보고자 하는데요
일단은 간단한 테트리스를 만들어 보기로 했습니다
그런데 책에 있는 문제 수준의 길어봐야 20 라인을 채 넘기기 힘든 그런것들을 풀다가
갑자기 완전한 프로그램 하나를 만들어 보려고 하니 몇가지 문제가 생겼는데요
평소 책에서 보고 약간 알고있던 "이식성 있는 프로그램"을 만들기 위해
표준 C문법을 잘 따라서 코딩하고 표준 C 라이브러리가 지원해주지 않는 기능들은 래핑 함수로 만들어서 최대한 분리 시켜
제가 만든 소스가 리눅스나 윈도우즈 시스템에서 수정없이 컴파일이 되도록 할껀데
그러기 위해선 전처리기의 조건부 번역을 이용해서
현재 OS와 컴파일러에 따라 각기 다른 헤더 파일을 인쿨루드 해야하고 다른 함수를 사용해야 하는데
표준 C에서는 OS와 컴파일러 정보에 대한 기정의 매크로를 정의하지 않고있고
하나의 컴파일러의 표준에서 확장된 기정의 매크로를 이용해서 얻어낸다면 그건 이식성을 떨어뜨리게 되는데
이 문제를 어떻게 해결할수 있을까요?
Forums:
GNU Autotools 나 CMake 같은 걸 사용합니다
간단히 해 보려면 직접 해당 툴의 명령어를 일일이 다 배우지 않고도
KDevelop 에서 C++ 프로젝트 만들면 됩니다.
수많은 컴파일러의
수많은 컴파일러의 pre-defined 값을 이용해 각각을 처리해 줘야 합니다.
ifdef와 ifndef로 인해 굉장히 복잡하고 지저분한 코드가 작성이 되는 것은 아직까지의 코딩 이론으로는 어쩔 수 없는 듯합니다.
그래서 일반적인 경우에는 가급적 플랫폼에 의존적인지 않는 함수로만 구현을 하며, 만약 OS이 의존적인 기능을 사용해야 한다면 직접 그런 코드를 작성하지 않고, 모든 플랫폼에서 사용가능하도록 이미 구현된 라이브러리를 사용해서 구현합니다. 가령 ACE library 라던지 FOX GUI Toolkit (An open source cross-platform C++ based Toolkit for GUI development.) 와 같은 것을 이용하는 것이지요.
댓글 달기