본문 바로가기

개발/C++10

안전한 정수 연산을 위해 SafeInt 를 써보자 SafeInt사용 목적SafeInt는 정수 연산에 있어서 발생할 수 있는 오버플로우를 방지하는 목적으로 사용C++ 의 템플릿으로 만들어졌으며, char형에서 __Int64(long long)형 까지 모든 정수형 사용 가능정수 연산을 통한 오버플로우나, 0으로 나누었을때 발생하는 오버플로우 감지 가능 기본 정수 자료형을 사용 했을시예제 소스 - unsigned int#include int main(){unsigned int X1 = 1234567; unsigned int X2 = 1234567; unsigned int X3 = X1 * X2; std::cout 2020. 7. 13.
VS 2017 환경에서 glog 설치 및 적용 방법 설치 https://code.google.com/archive/p/google-glog Google Code Archive - Long-term storage for Google Code Project Hosting. code.google.com 위 링크 Downloads 에 들어가서 맞는 버전으로 다운로드 이 글은 0.3.3버전(glog 0.3.3.tar.gz)으로 진행, 다운로드 후 파일 압축해제 glog 기본 설정 설치경로\glog-0.3.3\vsprojects\libglog 로 들어가서 libglog.vcproj 실행 VS2017로 실행시 단방향업그레이드 진행 후 빌드 진행 debug, release 둘다 빌드 후 debug, release 폴더에 생성된 libglog.dll, libglog.li.. 2020. 7. 9.
[EC++] #define 대신 const, enum, inline을 사용해야 하는 이유 이 글은 'Effective C++' 을 읽고 정리한 내용입니다. "선행 처리자보다 컴파일러를 더 가까이하자." #define - #define은 소스코드가 어떻게든 컴파일러에게 넘어가기 전에 선행 처리자가 밀어버리고 '숫자 상수로' 바꾸어버린다. 문제점 - #define으로 정의된 코드에서 에러가 발생하게되면, ASPECT_RATIO가 아닌, 1.653으로 에러메세지가 발생하게 된다. - 위와 같은 경우에는 코드에서 1.653이 의미하는 바가 무엇인지 모를 경우에 곤란한 상황이 생긴다. const 위와같은 문제를 해결하는 방법으로 const를 이용하는 방법이 있다. 장점 - AspectRatio는 언어 차원에서 지원하는 상수 타입의 데이터이기 때문에 컴파일러에서 처리된다. - 상수가 부동 소수점 실수 .. 2020. 2. 11.
[EC++] 용어 정리 ( 선언, 정의, 기본생성자, 복사생성자, 초기화, 복사대입연산자 등 ) 용어 정리 선언(declaration) - 코드에 사용되는 '어떤 대상'의 이름과 타입을 컴파일러에게 알려주는 것 - 구체적인 세부사항은 선언에 들어 있지 않다. 정의(definition) - 선언에서 빠진 구체적인 세부사항을 컴파일러에게 제공하는 것 - 객체의 경우에 있어서 정의는 컴파일러가 그 객체에 대한 메모리를 마련해 놓는 부분 - 함수나 함수 템플릿에 대한 정의는 그들에 대한 코드 본문을 제공하는 것 - 클래스 혹은 클래스 템플릿의 경우에는 그 클래스 혹은 템플릿의 멤버를 넣어준 결과 초기화 - 어떤 객체에 최초의 값을 부여하는 과정 - 사용자 정의 타입으로 생성한 객체의 경우, 초기화는 생성자에 의해 이루어진다. 기본생성자 - 어떤 인자도 주어지지 않은 채로 호출될 수 있는 생성자 - 원래부터.. 2020. 2. 10.