이번이 SafeInt 라이브러리에 대한 4번째 글이면서 마지막 글입니다. 이전 회의 제 글을 보셨다면 SafeInt가 어떤 것인지, 어떻게 사용하는지 대부분 알게 되셨습니다. 이번에는 SafeInt의 함수 버전에 대해서 설명합니다.
SafeInt 함수
SafeInt 라이브러리에는 SafeInt 클래스의 인스턴스를 만들지 않고 사용할 수 있도록 몇 개의 함수를 지원하고 있습니다. SafeInt 함수는 정수 오버플로우가 발생하지 않도록 단일 수치 연산을 보호하고 싶을 때 사용합니다. 그리고 복수의 수치 연산을 보호하고 싶을 때는 SafeInt 클래스를 사용하고 함수 버전들을 반복하여 사용하는 것보다는 SafeInt 클래스를 사용하는 것이 더 효율적이라고 합니다.
함수 |
설명 |
SafeAdd |
두 개의 값을 더한다 |
SafeCast |
다른 형으로 캐스팅한다 |
SafeDivide |
두 개의 값으로 나눈다 |
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals |
2개의 값을 비교한다. 이 함수들을 사용하면 서로 형이 다른 두 개의 값을 형 변환하지 않고 비교할 수 있다 |
SafeModulus |
나머지를 구한다 |
SafeMultiply |
두 개의 값을 곱한다 |
SafeSubtract |
두 개의 값을 뺀다. |
함수들의 이름만 봐도 어떤 것인지 알 수 있고, 이미 어떤 역할을 하는지 아실 테니 따로 길게 설명은 하지 않겠습니다. 아주 간단한 예제를 보여드릴 테니 그것을 보고 대충 어떻게 사용하는지 이해하고 부족한 부분은 MSDN을 참고해 주세요
#include <iostream>
#include <safeint.h>
using namespace msl::utilities;
int main()
{
unsigned char X1 = 123;
unsigned char X2 = 200;
unsigned char X3 = 0;
if( false == SafeAdd( X1, X2, X3 ) ) {
std::cout << "Overflow 발생!!" << std::endl;
}
unsigned int AA = 100;
short BB = 101;
if( false == SafeEquals( AA, BB ) ) {
std::cout << "AA와 BB는 서로 다릅니다" << std::endl;
}
getchar();
return 0;
}
< 결과 >
참고
SafeInt 함수
http://msdn.microsoft.com/ko-kr/library/dd575188.aspx
'Visual C++ 10' 카테고리의 다른 글
C++ AMP (2) | 2011.06.28 |
---|---|
ALM for C++ in Microsoft Visual Studio 2010 세션 정리 (VS에서 VC++의 차별은 사라진다!) (2) | 2011.05.23 |
[SafeInt] C++에서 안전한 정수 연산을 하자 - 3 (5) | 2011.03.02 |
[SafeInt] C++에서 안전한 정수 연산을 하자 - 2 (0) | 2011.02.22 |
[SafeInt] C++에서 안전한 정수 연산을 하자 - 1 (0) | 2011.02.14 |