본문 바로가기

프로그램언어/C++

[ eclipse ] C / C++ 개발 이번에는 디버깅을 할 때를 소개할까 합니다. 보통 서버가 잘 돌아가다가 어느순간에 /허걱 하는 순간이 있으실꺼라 생각합니다. 저희 서버가 보통 잘 그러거든여..ㅋㅋ 프로그램 능력부제..ㅡㅜ 그렇기 때문에 어디에서 무엇때문에 죽었는지 알아야 합니다. 또 이런 상황이 되면 안되기 때문에 보안 코드도 넣고 안전하게 잘 돌아가야 하기 때문에 정리하게 되었습니다. 먼저 eclipse에서 C/C++ 개발시 컴파일은 어떻게 하지 또는 궁금하신 분들을 위해 링크 : http://www.ibm.com/developerworks/kr/library/os-ecc/ Eclipse Platform에서의 C/C++ 개발 C/C++ Development Toolkit (CDT)을 사용하는 방법 문제 해결에 도움이 되셨으면 해서 링.. 더보기
.Net 단축키 Visual Studio 단축키 단축키 단축키 설명 F3 찾은 문자열에 대한 다음 문자열로 이동 (Next Search) F2 지정된 다음 북마크로 이동 F9 현재 라인에 Breakpoint를 지정/해제 Alt + 마우스 드래그 세로로 영역 선택 Alt + Mouse 블록 설정 세로로 블록 설정하기 (마우스로) Alt + F8 인덴트 정리. 범위 선택 후 사용하면 해당 범위를 표준 인덴트로 바꾸어줌. Shift + F9 디버그 모드에서 해당 변수를 바로 Watch Window에 등록. Shift + Alt + 커서 이동 Shift + F12 선언으로 이동 Ctrl + Shift + F8 세로로 블록 설정하기 (키보드로), 취소할 때는 Esc키를 눌러야 함 Ctrl + U 선택된 영역을 소문자로 바꿈 Ct.. 더보기
Smart Pointer template class CountedPtr { private: T* ptr; long* count; public: explicit CountedPtr(T* p=0):ptr(p), count(new long(2)){ } CountedPtr(const CountedPtr& p) throw():ptr(p.ptr), count(p.count) { ++*count; } ~CountedPtr() throw(){ dispose(); } CountedPtr&operator=(const CountedPtr& p) throw() { if(this != &p){ dispose(); ptr = p.ptr; count = p.count; ++*count; } return *this; } T& operator*() const.. 더보기
STL Find 삽질 기행문 서버 프로그램중에 발생한 일이 하나 있습니다. g++ 컴파일러와 MS컴파일러가 틀리다는 것을 또 한번 느끼는 계기가 되었습니다. 리눅스에서 STL vector을 사용해서 필요한 정보를 push_back에 담아 놓고 그것을 find 문을 통해 검색해서 찾아 처리하는 모듈을 만들던 중에 에러없이 알고리즘 및 생각했던 구조만 만들어 놓았습니다. 이것을 단위 테스트를 통해 좀더 세분화 작업을 해보려구 윈도우 MS2005로 가져와 단위 모듈을 좀 더 꾸며 보려고 똑같이 만들어 놓은 상태에서 에러가 발생..( -_- 젝1 ) 또 오타가 있나 하는 생각에 잘 살펴 보았습니다. ( 리눅스 프로그래을 오래하다 보니깐 윈도우는 거의 안쓰는 프로그래머 입니다. ㅡㅜ 인터넷 뱅킹이나 아니면 포샵기타 잡일에만 사용되는 윈도우라.. 더보기
Template 사용 14.5.2/1 A template can be declared within a class or class templates; such a template is called a member template. A member template can be defined within or outside its class definition or class template definition. [...] 14.5.4.3/2 If a member template of a class template is partially specialized, the member template partial specializations are member templates of the enclosing class template.. 더보기
make 강좌 이 포스트를 보낸곳 () 3. make 강좌 3.1 머릿말 소스 한두 개로 이루어진 C/C++ 언어 교양과목 과제물을 제출하는 것이 아니라면 약간만 프로젝트가 커져도 소스는 감당할 수 없을 정도로 불어나게 되고 그것을 일일이 gcc 명령행 방식으로 처리한다는 것은 상당히 곤역스러운 일입니다. 그래서 하나의 프로젝트를 효율적으로 관리하고 일관성있게 관리하기 위하여 Makefile 이라는 형식을 사용하고 make 라는 유틸리티를 사용합니다. 여러분이 리눅스에서 소스 형태로 되어 있는 것을 가져와서 컴파일하게 되면 보통 마지막에는 make 라는 명령, 또는 make 이런 식으로 치게 됩니다. make 라는 유틸리티는 보통 현재 디렉토리에 Makefile 또는 makefile 이라는 일정한 규칙을 준수하여 만든.. 더보기
AutoTools http://blog.naver.com/y1q2q/120035849604 이 포스트를 보낸곳 () 푸른 달빛과 소년 | 김효종 http://blog.naver.com/classic2u/50003118786 1. autotools requirement 현재 contents 버젼 autoconf 2.53 automake 1.6 예젼 autoconf 에서는 입력값으로 configure.in 을 사용하였으나 .in 은 configure 의 입력값으로 사용되고 있기때문에 오해를 피하기 위해 현재는 configure.ac를 사용하게 되었다. 주로 *.in 파일들은 configure의 입력값으로 취급되고 있으며, 이 파일들이 configure 과정을 거쳐서 실제 원하는 파일이 된다. 예를 들어 script.in 이라.. 더보기
[C++] 캐스트 연산자 1.static_cast static_cast 연산자는 지정한 타입으로 변경하는데 무조건 변경하는 것이 아니라 논리적으로 변환 가능한 타입만 변환한다. 기본 문법은 다음과 같다. static_cast(대상) 괄호안에 원하는 타입을 적고 ( ) 괄호안에 캐스팅할 대상을 적는다. 즉 (대상) 변수를 형으로 강제로 바꾸는 동작을 한다. 나머지 C++ 캐스트 연산자도 기본 형식은 이와 동일하다. 간단한 예제를 만들어 보자. 예 제 : static_cast #include void main() { char *str="korea"; int *pi; double d=123.456; int i; i=static_cast(d); // 가능 pi=static_cast(str); // 에러 pi=(int *)str;.. 더보기