순수 가상 메소드(pure virtual method)는 다음과 같이 선언한다. virtual void a() = 0; 순수 가상 메소드가 선언된 클래스에서는 실제 코드는 없이 단지 메소드의 이름만 존재하며, 실제 상속받은 클래스에서 새로 정의하여 사용한다. 추상 클래스(Abstract Class)는 이러한 순수 가상 메소드를 하나 이상 가지고 있는 클래스를 말하며, 추상 클래스라는 이름과 같이 실제 메모리에 인스턴스화 되어 저장되는 것이 아니기 때문에 이를 구현하려면 자식(파생)클래스를 이용해 구체화 하는 작업이 필요하다. 따라서 추상 클래스를 사용해 직접 객체를 생성하려고 하면 바로 컴파일 오류가 발생한다. 참고: Do it! bada 모바일 프로그래밍 by 여인춘
객체 지향 언어가 아닌 C언어만 아는 상태라면 static const와 const의 차이점에 대해 잘 모를 수 있다. static const는 객체 지향 언어에 해당하는 C++과 같은 프로그래밍 언어에서 자주 사용하는 상수 선언 방법이다. 그렇다고 일반적으로 C언어에서 사용하는 const를 사용하지 않는것은 아니다. const도 사용하고 static const도 사용한다. 이 두 상수선언방법에는 여러가지 차이점이 있는데, 가장 대표적인 차이점은 C++에서 const를 사용하면, 해당 클래스 내부에서만 인식할 수 있다는 점이다. 예를들어, People이라는 클래스에서 const int height = 180 을 선언했다면 이 height 멤버변수는 오직 People클래스 내부에서만 인식할 수 있다. 그럼 ..
임베디드 프로그램을 개발하기 위해서는 반드시 크로스컴파일러가 필요하다. 크로스 컴파일러는 프로그래밍 소스코드를 개발대상 임베디드 시스템에 맞게 컴파일해서 바이너리 파일로 만들어주는 역할을 한다. 윈도우가 설치되어 있는 PC에서 사용하는 C컴파일러는 크로스 컴파일러라고 표현하지 않는다. 즉 MS의 Visual Stuidio.NET은 크로스 컴파일러 도구가 아니다. 크로스 컴파일을 해야 하는 이유는 우리가 소스코드를 개발하기 위해 사용하는 윈도우가 설치된 컴퓨터와 실제 개발된 실행파일이 실행될 임베디드 시스템은 확연히 다른 기계이기 때문이다. 따라서 임베디드 시스템을 위한 프로그래밍을 하기 위해서는 임베디드용 컴파일러를 별도로 설치해야 하는데, 이러한 컴파일러를 크로스 컴파일러라고 한다. 예륻들어 설명하면 ..
컴파일(compile)이란 개발자들이 특정한 프로그래밍언어(예를들어 C, C++, Object-C등)을 사용해서 컴퓨터가 이해할 수 있는 기계어 코드(이진코드)로 변환하는 작업을 일컫는다. 좀더 정확하게 말하면, 컴퓨터와 그 컴퓨터에 설치되어 있는 운영체제가 이해할 수 있는 기계어 코드로 변환하는 일이다. 따라서 동일한 컴퓨터라 할지라도 윈도우가 설치되어 있는 컴퓨터와 리눅스가 설치되어 있는 컴퓨터는 같은 애플리케이션이라도 컴파일된 결과물은 다르다. 또한, 컴파일해서 생성된 기계어코드만으로 바로 컴퓨터에서 실행될 수는 없다. 그 이유는 대부분의 애플리케이션들은 사용자가 프로그래밍한 소스 코드도 있지만, 상당히 많은 부분들이 라이브러리 형태로 제공되기 때문이다. 예를들어, C프로그래밍을 할 때 키보드를 누..
Windows시스템에서 (리눅스는 아닐듯) 유니코드와 MBCS(Multi Byte Character Set)을 지원하기 위해 TCHAR을 사용한다. MS에서 제작한것이라고 생각 일반적으로 tchar.h을 include 한 후 TCHAR을 사용하게 되는데, 이것에 대한 상세 내용을 보면 다음과 같다. 하지만 tchar.h에는 _UNICODE에 대한 정의만 있고, UNICODE에 대한 정의는 안보인다. 못찾는것일수도있고.. UNICODE는 타입에 대한 정의고, _UNICODE는 _txxx 들어간 함수에 대한 정의 이다. typedef char CHAR; typedef wchar_t WCHAR; #define CONST const typedef CHAR* LPSTR; typedef CONST CHAR* LPC..
기존 MinGW의 gcc를 이용한 개발환경구성을 포스팅했었다. http://hyogeun.tistory.com/27 이번엔 gcc를 따로 설치하지 않고, 일반적으로 많이 사용하는 MS visual studio에 포함되어 있는 Visual C++ 컴파일러(cl.exe)를 이용한 컴파일을 알아 보도록 한다. Editplus에서의 셋팅전에 cl.exe 을 사용할 수 있도록 PATH를 지정해줘야 한다. 현재 사용하고 있는 IDE(Integrated Development Environment)는 MS의 Visual Studio 2010이다. Visual studio를 설치하게 되면 시작프로그램 visual studio tools에 전용 명령프롬프트가 설치 된다. 이것은 visual studio 를 사용하기 위해 ..
Win32API에서 HWND은 보통 윈도우 핸들값을 갖고 오기위해 사용된다. 약자도 Handle to a WiNDow 이다. 그리고 HANDLE은 void* type으로 보통 프로세스의 핸들을 저장하기 위해 사용된다. 이 예제는 프로세스의 ID알고 있는 상태에서 현재 윈도우에 띄어져 있는 프로세스의 윈도우핸들을 얻어오는 역할을 한다. // 여기서 알고 있는 프로세스ID는 pi[i].dwProcessId 이다. HWND tempHwnd = FindWindowA(NULL, NULL); ULONG idProc; while(tempHwnd!=NULL){ if(::GetParent(tempHwnd) == NULL){ GetWindowThreadProcessId(tempHwnd, &idProc); if(pi[i]...
완벽한 소스가 아니다. (주)아임구루의 강석민 강사님에게 배운 것을 정리하다가 만 소스. 일단 어셈과 같이 컴파일 하기 위해서는 무료 어셈 컴파일러인 NASM을 설치하고 C:\>nasm -f win32 -o name.obj, name.asm을 실행하여 목적소스로 만든 후 윈도우 컴파일러 (cl.exe)를 통해 같이 링크 해야 한다. 순서를 적자면 C:\>cl name.cpp /c 명령어를 통해 name.obj로 컴파일만 한 뒤 C:\>nasm -f win32 -o name2.obj, name2.asm 를 실행하여 어셈블러를 컴파일 한다 그 다음 윈도우 링커인 link.exe 를 사용하여 링킹을 하게 되면 PE(Portable executable) 포맷이 생긴다. 일반적인 command에서는 path가 설..
- Total
- Today
- Yesterday