본문 바로가기

컴퓨터/언어,프로그래밍

MFC API 차이

API는 윈도우즈C와 같고

MFC 는 윈도우즈 c++ 같다고 보면 됩니다.

 

그래서 공부를 C->C++->API->MFC 이렇게 시간을 두고 공부해오다 보면

자연스럽게 익혀지는데 한꺼번에 다 하려고 하면 혼란이 오게 됩니다.

 

장단점이 있는데

API는 쉽게 C 처럼 클래스 개념이 아니가 때문에 많은 윈도우즈 함수들에 대해서 또는 메세지 개념에 대해서 놀란 다음에는 쉽게 접근이 가능합니다.

 

 

그런데 MFC는 CLASS 개념이 있기 때문에

C++에 대한개념이 없으면 MFC를 하고 있으면서도 계속 C처럼 프로그램을 짜게 되기 때문에 쉽지 않을 겁니다.

 

MFC가 정의나 선언을 클래스 위저드를 가지고 하지 않고 정의할때에 MFC를 해도 늦지 않을 것입니다.

CPP에서 클래스를 자유자재로 만들고 구성을 잘살 할수 있을때

MFC를 도전한다면 보다 쉽게 접근할수 있지 않을까 생각합니다.

클래스 위저드는 그다음에 프로그램 속도를 위해서만 필요하다고 생각하면 됩니다.

-----------------------------------------------------------------------------------------

우선, 여기서 API라고 쓰인 용어는 MS의 Win32 API를 칭하는 것으로 파악하도록 하겠습니다.
API는 MFC와 같은 특정한 라이브러리에 대한 고유명사가 아닌, 라이브러리의 '종류'를 나타내는 일반명사입니다.
Berkley Socket API, Windows Socket API, pthread API, x API 등등과 같이 말이죠.
따라서 어떤 API인지 지정하지 않고 API라고만 쓰는 것은 일반적으로 오해의 소지가 있습니다.
여기서는 문맥상 MFC와 함께 언급되는 것으로 보아 MS의 Win32 API인 것으로 가정하고 진행하도록 하겠습니다.

 

먼저, 몇가지 오해를 풀어야 할 것 같습니다.

우선, Win32 API를 직접 써서 프로그래밍을 할 경우 파일 한개로만 구현하는 것이라는 생각은 잘못된 것입니다.
C/C++은 분할 컴파일을 지원하는 언어로써, 어떠한 방식으로 프로그래밍을 하건 전체 프로그램을 두개 이상의 모듈로 나누어서 코딩하고 컴파일한 후, 링크하여 최종 실행파일(실행파일이건, 라이브러리이건, DLL/so 이건)을 만들어 낼 수 있습니다. 이는, Win32 API를 쓰더라도 예외가 아니며, Win32 API를 쓰면 파일 한개로만 만들어야 한다는 것은 오해하고 계신 것입니다.

Win32 API를 써서 윈도우용 프로그램을 만들 때에도, 얼마든지 여러개의 파일에 클래스와 함수, 객체의 선언을 분할하여 코딩할 수 있습니다. 단지 차이점이라면, Visual C++에서 프로젝트를 생성할 때 Win32 API 프로젝트는 소스파일 템플릿을 하나만 프로젝트에 만들어 주고, MFC 프로젝트는 프레임웍에서 필요로하는 소스파일 템플릿을 모두 다 만들어 준다는 것이 차이일 뿐입니다. 필요하다면 얼마든지 Win32 API프로젝트에서도 여러개의 파일을 추가할 수 있습니다.

물론, 마찬가지로 MFC프로젝트도 모든 소스파일과 헤더파일의 내용을 하나의 파일로 합쳐서 만들어도 똑같이 동작합니다. C/C++은 어떠한 함수나 클래스가 어떠한 모듈에 정의되어 있더라도 구분하지 않고 정확히 컴파일해 줍니다. (파일 안에 그 파일이름에 해당하는 클래스 선언이 반드시 있어야 하는 자바와 차이를 보이는 점이죠)

생각해 보십시오. 프로그래머는 기본적으로 컴퓨터의 동작을 정의할 수 있는 능력을 가진 사람들입니다.
이런 능력을 가진 사람에게 특정한 라이브러리가 특정한 방식으로만 프로젝트를 구성해야 한다고 강제하는 것은 자체가 말이 안되는 것입니다. 즉, 여러개의 파일을 프로젝트에서 사용하는 것은 프로젝트 생성시의 초기값이 그렇게 되어 있다는 것 뿐, 얼마든지 사용자가 조작을 통해서 바꿀수 있는 부분입니다.

 

 

그리고 다음으로, 여러개의 파일을 오가며 선언과 정의를 하는 것이 짜증난다.... 라는 부분에 대해서도 몇가지 오해가 있는듯 합니다.

질문을 하신 분께서 Win32 API와 MFC를 배우고 있다는 점을 감안하면, 소프트웨어 프로젝트를 얼마 경험해 보지 못한 분이라고 생각됩니다. 물론 지금 단계에서 짜보는 작은 규모의 소프트웨어에서는 여러개의 파일로 분할하여 작업하는 것이 불편하고 번거로운 일일 수 있습니다. 현재 MFC가 자동으로 생성해주는 코드는 1000라인 정도로, 이정도 규모의 프로젝트는 물론 말씀하신 대로 여러개의 파일을 오가며 작업하는 것은 시간낭비가 될 수 있습니다. 하지만 경험이 쌓이고 참여하게 되는 프로젝트의 규모가 5000라인, 만 라인, 10만 라인 정도로 커지면, 더이상 한개의 파일로 프로젝트를 구성하는 것이 비효율적이게 됩니다. 1만 라인의 코드에는 자연히 수백개의 함수 정의와 클래스정의가 파일 안에 들어 있게 마련이며, 수정 사항이 발생할 경우 그 선언이 파일의 어디쯤에 있는지를 찾는 것도 만만치 않은 작업이 될 것입니다. 또한 1만 라인의 코드를 컴파일하는 것은 현재의 컴퓨터로도 10여분이 걸리는 작업이 되죠. 한줄의 오류를 수정하고 10분동안 기다리는 것은 과히 효율적이라고 할 수 없겠죠.

따라서 지금 단계에서 여러개의 파일로 연습하는 것은, 지금 당장의 효율성보다는 나중의 효율적 작업을 위한 기초적인 습관을 들이는 면이 강합니다.

제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...