C 5

[C/C++]함수 포인터

1 함수포인터의 사용 1.1 함수포인터란 요즘 C 하는 개발자를 찾기가 힘들던가요 ? 여기 저기 C언어 개발자를 소개시켜 달라는데, 사람이 없어서 난리입니다. C언어 하면 떠오르는게 포인터죠. 데이터의 위치를 가리키는 데이터 타입라고 생각하면 간단한 개념이긴 한데, 개념이 단순할 뿐 잘 다루기는 쉽지 않습니다. 커널이 관리하는 메모리를 낮은 수준에서 직접 건드리기 때문입니다. 툭하면 다른 프로세스의 메모리 영역을 침범해서 프로그램이 뻗어 버리고, 좀 잘 돌아간다 싶으면 메모리를 해제하지 않아서 모든 메모리를 다 써버리는 문제가 발생합니다. 전혀 추상화 되 있지 않다는 얘기죠. 그러니 사람이 직접 추상화 해줘야 합니다. 예컨데 할당한 메모리를 초과하지 않게 하거나, 메모리 해제를 관리하는 코드를 추가하거나..

Programming/C, C++ 2013.04.18

[VI] VI/VIM 명령어 정리

VIM 명령어 정리 1. 저장 및 종료a커서 위치 다음칸부터 입력A커서 행의 맨 마지막부터 입력i커서의 위치에 입력I커서 행의 맨 앞에서 부터 입력o커서의 다음행에 입력O커서의 이전 행에 입력s커서 위치의 한글자를 지우고 입력cc커서위치의 한 행을 지우고 입력 3. 이동x 또는 dl커서 위치의 글자 삭제X 또는 dh커서 바로 앞의 글자 삭제dw현재 위치부터 스페이스 까지 삭제diw현재 위치에 있는 단어 삭제dd커서가 있는 행을 삭제[n]dd현재 커서 부터 아래 n번째 줄까지 삭제dj현재 커서와 아래 줄 삭제[n]dj현재 커서 부터 아래 n+1번째 줄까지 삭제dk현재 커서와 윗로 n+1번째 줄까지 삭제[n]dk현재 커서와 윗 줄 삭제D 또는 d$현재 커서가 있는 위치부터 행 끝까지 삭제d0 또는 d^현재 ..

Programming/Tool 2013.04.18

[C/C++]전처리기 Pre-Processor

컴파일을 시도할 경우 컴파일이 실행되기 전에 전처리기 명령부터 처리된다.전처리기는 # 로 시작하고 ; 를 붙이지 않으며 보이지 않게 소스 코드를 변경하며컴파일러에게 지시를 내릴 수도 있다. 각각은 여기서는 명령어라는 용어를 사용했지만 정확하게는 directive(지시자) 라고 하는 것이 나을 지 모르겠다. #include 가장 흔히 볼 수 있는 전처리기이다. 해당 파일을 찾아서 컴파일러가 그 파일이 마치 현재 컴파일하는 소스 코드에 포함되어 있는 것같이 해준다. 는 표준 헤더 파일일 경우에 설정되어 있는 폴더에서 헤더 파일을 찾으며 “” 는 그 외 폴더에서 찾을 수 있는데 최우선으로 현재 프로젝트 폴더에서 찾게 된다. #define define 문은 여러 경우에 사용될 수 있는데 일반적으로 문자열 대치에..

Programming/C, C++ 2013.04.18

[C/C++]C를 이용한 이진탐색트리 라이브러리

과제로 이진탐색트리를 구현하였다. 이진탐색트리를 다음에 이용할 때는 이 라이브러리를 이용하여 구현한다면 다음부터 이진탐색트리의 구현이 매우 편리해질 것같다. 1. BSTError.h 이진탐색트리에서 발생하는 에러 중에 필자가 직접 확인한 에러들에 관한 에러코드들을 규정했다. //에러 코드 #define BST_OK 0x00000000 #define BST_MALLOC_FAIL 0xff000001 #define BST_KEY_ALREADY_EXIST 0xff000002 #define BST_KEY_NOT_EXIST 0xff000003 #define BST_NODE_IS_NULL 0xff000004 2. BST.h 이진탐색트리에 관한 소스이다. 이진탐색트리의 노드와 삽입, 삭제, 순회에 관한 코드들이 구현되..

Programming/C, C++ 2012.09.26

[C/C++]MySQL을 C로 연동하는 소스

MySQL을 C로 연동해 보았다. 예전에 진자게 해본 것이지만 이번 기회에 라이브러리 처럼 정리해서 계속 사용하기 위해서 다시 한 번 만들어 봤다. 간단한 함수 몇개를 만들고 각 사항에 대한 에러코드를 만들었다. 1. dbError.h 각 에러들이 기술되어있는 헤더파일이다. 이런 식으로 에러를 기술해 놓으면 어느 부분에서 에러가 났는지 찾기가 쉬워진다. #define MB_RES unsigned int #define MB_OK 0x00000000 #define DB_INIT_ERROR 0xff000000 #define DB_CONNECTION_ERROR 0xff000001 #define DB_QUERY_EXECUTION_ERROR 0xff000002 #define DB_FETCH_FAIL 0xff0000..

Programming/C, C++ 2012.08.05