#define을 통해 가장 작은 음수표현하기
기술노트 60149
아키텍처:
ARM
컴포넌트:
compiler
업데이트:
2021-05-11 오전 4:07
소개
본 기술 노트는 '컴파일러 경고 메시지를 받지않고 #define을 통해 가장 작은 음수를 표현하는 방법'에 대해 설명합니다.
IAR C/C++ Compiler for ARM와 기타 일부 IAR C/C++ 컴파일러에 적용됩니다.
문제
가능한 가장 낮은 값을 #define을 통해 사용할때, IAR C/C++ 컴파일러는 경고 메시지를 발생시키고 값의 부호를 변경합니다.
#define MIN_VALUE (-2147483648L)
signed long lValue;
lValue = (MIN_VALUE + 1);
예제 (32비트형 정수)
다음의 문자열은...
-2147483648L
...컴파일러에 의해 두 부분으로 해석됩니다, 그 첫 번째는...
-
.."뺄셈 연산자"로 해석되며, 다음 두 번째는...
2147483648L
...인 상수로 해석됩니다. 또한 위의 상수는 LONG_MAX 보다 크게 됩니다.
해결방안
#define MIN_VALUE (-2147483647L - 1)
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.