반응형

C++ 프로그래밍 32

Visual Studio 2010에 적용 예정인 C++0x

우선 이 글은 MS Visual Studio Team System 2010 공식 팀 블로그 에 있는 내용을 한 페이지에 볼 수 있게 요약한 것입니다. 자의적으로 요약한 만큼 잘못된 설명이 존재할 수 있으며 좀 더 궁금한 부분은 해당 페이지를 참조하여 주시면 됩니다. auto 컴파일 시간에 컴파일러가 자동으로 타입을 유추하여 코드를 생성시켜 주는 새로운 키워드 입니다. 예제 보니 가장 많이 쓰일 곳이 STL 코드내일 듯 보입니다. for( auto IterPos = ItemCodeList.begin(); IterPos != ItemCodeList.end(); ++IterPos) { cout

C++ 프로그래밍 2009.07.21

C++ 헤더파일에 선언할 수 있는 4가지 타입의 전역변수

최근에 헤더파일에서의 static 전역변수에 대한 포스트를 올렸다 지웠습니다. 생각지도 못한 버그를 만나 2시간이나 고생을 했기 때문이었는데, C/C++에서의 static 키워드는 여러모로 조심스러운 키워드인거 같습니다. 멀티쓰레드에서의 버그가능성까지... 이 글은 덕분에 테스트해 본 전역변수에 대하여 요약하여 놓은 것입니다. 참고로 테스트 환경은 Visual Studio 2008 sp1 입니다. object라는 클래스가 있다는 가정하에 헤더파일에 선언할 수 있는 4가지 타입의 전역변수는 아래와 같습니다. 1. object var; 2. static object var; 3. extern object var; //object var;라고 특정 cpp파일에 정의되어 있다고 가정합니다. 4. typedef ..

C++ 프로그래밍 2009.04.21

[STL] erase Story... beta

STL에서 가장 짜증나는 부분이 erase부분이 아닌가 싶다. erase와 remove의 차이점을 알아야 하고 거기에 몇 개 종류별 iterator의 erase 기법을 알아야 한다. 흠... 암기하기도 그렇고... 꽤나 귀찮은 것들 하나다. 그래서 찾아본 것을 정리하면 아래와 같습당... map's iterator erase 방법 // 1. 특정 조건에 따라 제거 map mp; for(map::iterator i=mp.begin(); i != mp.end(); ) { if( {조건문} ) { mp.erase( i++ ); } else { ++i; } } // 2. 전체 제거 map mp; for(map::iterator i=mp.begin(); i != mp.end(); ) { mp.erase( i++ ..

C++ 프로그래밍 2009.04.21

C++ 흔한 실수

개인적으로 겪은 실수에 대한 로그입니다. 매크로 함수의 이름이 클래스 멤버함수와 같은 이름일 경우의 처리 케이스) numeric_limits::max();와 같이 STL을 이용하여 int의 max형을 얻으려고 했는데 warning C4003...와 같은 에러를 얻었다. 이런 현상이 일어난 이유는 max(..)라는 매크로 함수가 에 정의되어 있기 때문이었다. 즉, 매크로가 전처리단계에서 확장된 후에 컴파일이 되기 때문에 흔히 발생하는 문제이다. 해결책은 2가지가 있다. 1. #define NOMINMAX을 포함 전에 정의하는 방법이 있다. 2. (numeric_limits::max)()와 같이 함수코드를 ()로 감싸는 방법이 있다. 결국, 2번 방법을 선택했는데 이렇게 편한 방법이 있는지도 모르고 그동안은..

C++ 프로그래밍 2009.03.23
반응형