본문 바로가기

C++

(5)
C++ 11과 C++ 99 를 동시에 지원하기 위해서 feature를 구분할 때 유용한 팁 어떻게 compiler version 에 따라 API 지원 피쳐를 구분해서 제공할까 고민하다가 compiler 를 변경해가면서 직접 값을 정리해봤습니다.예를 들면,c++11 부터 지원하기 시작한 매우 유용한 feature들이 있습니다.1. final, override keyword 2. class 선언부에서 변수 초기화 하는것 이러다 보니, c++11로 개발하고 c++99 용 모듈에서도 사용할 수 있게 할 수 없을까?하는 아이디어( 요구사항)이 있었습니다. 사실 개발은 c++11로 하고 싶었거든요.아니면 code를 다시 다 걷어내거나 내부 로직에서 사용하고 있는 auto, lamda등을 다 걷어내야 하는 판국이라서 말이죠. 그래서 나온 아이디어가 이렇습니다. 1. 개발은 C++11로 한다.2. 다른 모듈..
stl : map 과 array 성능비교. STL의 map,array의 성능에 차이는 없을까? key값이 string인 경우와 int인 경우의 차이는 얼마나 될까? 이것을 확인하기 위해서 아래와 같이 간단한 성능 테스트 프로그램을 작성해봤습니다. stringMapTC()는 strStr 에 들어있는 string들을 key로 하여 map의 요소에 접근하는 테스트 stringUnorderedMapTC()는 strStr 에 들어있는 string들을 key로 하여 unordered_map의 요소에 접근하는 테스트 intMapTC()는 int 값을 key로 하여 map의 요소에 접근하는 테스트 intArrayTC()는 stl::array로 요소에 접근하는 테스트 cArrayTC()는 stl container가 아닌 srcStr[] 에서 직접 35번 요소에 ..
C에서 C++ 그리고 framework 프로그래밍 역사에서 빼놓을 수 없는 C와 C++ 언어에 대해서 얘기해 보고자 합니다. 1. C에서 C++ C 언어는 벨 연구소에 일하던 데니스 리치가 B언어(Bell 연구소에서 따와서 B라고 명명함)를 개선하여 만들었습니다. 이당시 상황은 Unix에서 사용할 프로그래밍 언어가 필요한 상황이었고 이 언어가 개발됨에 따라 Unix의 바탕이 되는 프로그램들은 거의 모두 코드가 C언어로 만들어지게 됩니다. 리눅스 역시 Unix를 모델로 만들어지면서, 리눅스의 바탕 역시 C언어로 만들어지게 됩니다. (리눅스는 리누스 토발즈가 헬싱키 대학원생 시절 교수가 교육용으로 만든 미닉스의 기능에 만족하지 못하고 새로 개발하게 된 OS입니다.) 때문에 C언어가 크게 확산되고 발전된 것은 Unix나 Linux같은 OS의 개발과..
google c++ style guide line goolge 내의 c++에 대한 coding style guide를 제시하고 있는 link입니다. Platform이 나 framework을 제공할 때 API의 형식을 어떤식으로 제공해야 할것인가 하는 것에 무척 고민들을 많이 하게됩니다. 생각지 못했던 부분들에 대해서도 많은 내용들을 담고 있어 참고할 만한 자료라고 생각됩니다. https://google.github.io/styleguide/cppguide.html 내용: Google C++ Style Guide Background C++ is one of the main development languages used by many of Google's open-source projects. As every C++ programmer knows, the..
C++를 제대로 알자!. Effective C++ , More Effective C++ 스콧 마이어스 참. 주옥같은 한줄 한줄이 들어있는 책이죠. GOF 디자인 패턴과 함께 손에 놓을 수가 없네요. 왠만한 소설책보다 재미있다는...ㅋ 2판은 후배가 본다고 해서, 서점에 들려서 3판을 주문해서 다시 보게 되었답니다. ㅎ [Effective C++] 복사생성자와 대입연산자 처리 - 만약 내가 만들려는 class가 만약 복사가 필요없다면, 원천 차단 하라.! - 항목 6: 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해버리자! 복사 생성자와 대입 연산자 private으로 선언하기! 복사 생성자와 대입 연산자 예기가 나오니 몇달전에 겪었던 한 사건이 생각나네요. ㅎ DLL 모듈을 작성하면서 만든 class가 있었는데, 우연찮게 다른 프로젝트에서 해당 class 와 같이 들어있던 ..