Dev/C++

C++ Refactoring

기 작성되어 있던 C++ 컴포넌트에서 한개의 함수에 너무 많은 코드로 인해, 컴파일러 내부 오류를 경험하고 해당 코드에 대해서 리팩토링을 결심!! 관련된 작업은 Extract Method 이며 자동으로 해당 부분을 추출하여 Method를 만들어 주는 툴을 중심으로 알아 보았다. 이것 저것 알아보던 중 2개의 후보가 눈에 띠었다. 대상은 "Refactor! For Visual C++ 2005"와 "Visual Assist X" 에서 지원하는 Refactoring 에 관련된 기능이다. 결론부터 얘기하면 "Refactor! For Visual C++ 2005"의 기능이 쓸만 하였고 Visual Assist X 의 리팩토링 기능은 간단한 기능을 제외하고는 그다지 유용하지 못하였다. Visual Assist X ..

2009.04.14 게시됨

Dev/C++

asio C++ library

http://sourceforge.net/projects/asio/ asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach. asio 는 클로스 플랫폼은 지원하는 네트워크 라이브러리이다 ACE와는 비교도 안되게 가볍고 C++ 헤더로만 이루어져 있어 별도의 라이브러리 컴파일 과정이 필요없다. 그리고 각 플랫폼에 맞는 동기/비동기 모델을 하나의 인터페이스로 구현을 하여 유연성있는 네트워크 프로그램을 제공을 한다 boost 1.35부터 포함되어 있어 boost 라이브..

2008.08.22 게시됨

Dev/C++

C++ 0x - Herb Sutter의 블로그 글

Herb Sutter 블로그의 C++ 0x 에 대한 리포트 링크 정리 http://herbsutter.wordpress.com/ http://herbsutter.wordpress.com/2007/05/10/trip-report-april-2007-iso-c-standards-meeting/ - 템플릿 별칭(aliase), 가변 템플릿 파라미터, using 용법 확장에 대한 내용들 http://herbsutter.wordpress.com/2007/09/10/trip-report-july-2007-iso-c-standards-meeting/ - 새로 추가되는 기능들에 대한 내용들 - constexpr, decltype 등... http://herbsutter.wordpress.com/2007/11/01/tr..

2008.07.29 게시됨

Dev/C++

memory pooling - code

MemPooling #메모리 풀링 클래스 Efficient C++(Dov Bulka , David Mayhew)에서 많은 도움은 얻음 나름대로 좋은 성능을 냄 /** * MemPool.h * * Memory Pooling Class * * Copyright (c) 2004 by cdecl (byung-kyu kim) * */ #ifndef __MEM_POOL_H__BY__CDECL #define __MEM_POOL_H__BY__CDECL namespace GLASS { // MemPool Class class MemPool { public: typedef unsigned int size_type; enum { DEFAULT_CHUNK_SIZE = 32 }; struct MemNode { MemNode *..

2008.05.01 게시됨

Dev/C++

Is Derived - code

Is Derived # 처음에 이 소스에서 template의 가능성을 보고 뒷통수를 맞은 기분 이었습니다. 기본적인 내용은 Base에서 Derived가 상속 되었느냐를 확인 하는 코드 입니다. 이 예제 뿐만 아니라 Modern C++ Design(Andrei Alexandrescu)에는 무궁무진한 template의 향연이 펼쳐집니다. 아래의 예제는 More Exceptional C++(Herb Sutter)에 나오는 내용입니다. 원본은 Andrei Alexandrescu에 의해 작성된 글이라고 More Exceptional C++에서 명시 하고 있습니다. 제가 컴파일러에서 테스트하고 수정한 소스입니다. //////////////////////////////////////////////////////// ..

2008.05.01 게시됨

Dev/C++

C++에서 프로퍼티 구현하기

C++에서 프로퍼티 구현하기 # C++에서 템플릿을 이용한 프로퍼티를 구현한 소스입니다. VC++에서는 프로퍼티를 컴파일러 차원에서 지원하지만 이건 ANSI 코드입니다. 출처는 BorlandForum 이고 보다 안정적이게 소스를 수정했습니다. #ifndef __PROP_H__BY_CDECL__ #define __PROP_H__BY_CDECL__ namespace Glass { class IYES {}; class YES : public IYES {}; class NO {}; template class Prop { public: typedef Prop this_type; typedef T (Parent::*get_fun)(); typedef void (Parent::*set_fun)(const T&); P..

2008.05.01 게시됨

Dev/C++

boost::pool 예제

boost::pool 예제 #boost::pool을 사용한 메모리 풀링. 빈번한 메모리를 사용할때에 유용하다고 판단. #include #include using namespace std; #include #include class VM { public: void* operator new(size_t s) { return bpool.malloc(); } void operator delete(void *p) { bpool.free(p); } private: char sz[100]; private: static boost::pool bpool; }; boost::pool VM::bpool(sizeof(VM)); class NVM { private: char sz[100]; }; template DWORD Po..

2008.05.01 게시됨

Dev/C++

STLport 초간단 설치

STLport의 사용이유 # VC++ 6.0의 내장된 STL 구현이 비표준인것들이 많아 사용상 어려움 부분적으로 내장된 STL보다 성능이 뛰어남 VC++ 7.0 이후 버전은 개인적으로 자체 STL사용 권장 STLport 초간단 설치 #STLport의 설치방법중 커맨드명령(IDE 없이)을 통해 설치하는 방법을 이용한다. (개인적으로 이방법이 가장 편하고 쉬움) VC++ 6.0을 사용할때 서비스팩은 항상 설치 권장 sp5 or sp6 STLport 받기 #아래의 사이트에서 Current release version파일을 받음 http://www.stlport.org/download.html 받은 압축된(gz이나 zip파일) 파일을 아무데나 풀기 컴파일하기 #압축을 푼 디렉토리에서 src디렉토리로 이동하여 컴..

2008.05.01 게시됨

Dev/C++

Stroustrup - The real interview

실제 Stroustrup 인터뷰(The real interview) # 원문: B. Stroustrup, "The real Stroustrup interview," IEEE Computer, vol. 31, no. 6, pp. 110-114, June 1998. 번역문: 서진택의 C++ complete guide중에서 발췌 'The Design and Evolution of C++'(Addison Wesley, 1994)에서, Bjarne Stroustrup은 아래와 같이 논의했다. "프로그래밍 언어는 실제로 세계(world)의 극히 작은 부분입니다. 그러므로 그것은 너무 심각하게 간주되어서는 안 됩니다. 일부분(proportion)의 감각(역자주: '프로그래밍 언어는 전 세계에 비하면, 매우 작은 부분..

2008.05.01 게시됨

Dev/C++

qsort vs sort

std::sort 는 qsort 보다 빠르다 # 비교 함수의 리턴값 qsort의 비교함수 리턴 값은 int type 입니다. 그러므로 결과는 3가지 종류이죠 a < b -> -1 a > b -> 1 a = b -> 0 그러므로 적어두 2번을 비교 해야 합니다. sort의 비교함수 리턴 값은 bool type이입니다. 그러므로 1번만 비교 하면 되는것이져 template bool comp(const T &a, const T &b) { return a < b // a가 b보다 작으면 참 아니면 거짓 } 비교함수의 inlining 비교자를 함수로 밖에 못넘기기때문에 함수호출로 인한 오버헤드는 불가피 합니다. 만약 비교함수를 inline으로 선언해도 함수 포인터를 사용 하므로 무시됩니다. (inline및 reg..

2008.05.01 게시됨