Computer/C, CPP, MFC

공용 언어 런타임 지원의 설정에 따라 빌드 결과값이 다르다?

hwaya. 2019. 10. 1. 13:33
반응형

오잉? 왜! 왜! 다르게 보이는거야??!?

 

예전에 만들어둔 MFC프로그램에서 보는것과 처리값이 다르게 보이는것이다.

'-106' ㅜㅜ

오? 왜 이러지 내가 잘 못 만들었나? (그렇지... 컴퓨터는 거짓말 안하니까~)

디자인 파일이라서 데이터 하나하나가 중요한데..

 

그래서 확인이 필요했다.

계산기 오픈!!

hex 값 96 이면 dec로 150이 맞는데

오잉?!

 

HEX값 96 이면 150 인데..

오잉? 0.00001초 정도 하고...

당연하니까~ 계산기 처리 단위를 바꿔보았다.

BYTE로 바꾸니 8비트만 계산되어 '-106'

그랬다.

뭐... 당연하고 사실 -106이 맞다.............................. 는 안돼!!!

난 저걸 원하는게 아니라고!!!

 

그래서 뭐가 문제일까?

단위도 바꾸고 비트도 자르고 했지만, 귀찮다..

 

빌드 설정 문제인가 싶어서

프로젝트 속성을 확인했다.

의심되어 보일만한 곳은 보이지 않았다...

조금 의심되는 부분이 공용 언어 런타임

 

역시..

'-106' 이 나올때는 공용 언어 런타임이 지원으로 되어 있었다

여기서 잠깐 공용 언어 런타임이란?

.NET Framework에서는 공용 언어 런타임이라고 하는 런타임 환경을 제공하는데, 여기에서는 코드를 실행하며 개발 과정을 더 쉽게 해 주는 서비스를 제공합니다.
컴파일러와 도구는 공용 언어 런타임의 기능을 노출하며 관리되는 이 실행 환경을 활용하는 코드를 작성할 수 있게 해줍니다. 런타임을 대상으로 하는 언어 컴파일러를 사용하여 개발한 코드를 관리 코드라고 합니다. 이 코드에서는 언어 간 통합, 언어 간 예외 처리, 향상된 보안, 버전 관리 및 배포 지원, 구성 요소 상호 작용을 위한 간단한 모델, 디버깅 및 프로파일링 서비스 등의 기능을 이용합니다.

 

이제 '공용 언어 런타임 지원'을 지원 안함으로 하고 빌드하고 값을 보았다.

지원이 좋은데, 착한데..

 

빌드!! 디버깅으로 한번 보자!

 

14번째가 '150' 으로.. 나온다

오!!!!!! 150으로 잘 나온다.

나이스!

 

왜 그렇지...??

닷넷에서 무부호타입이 안되는것도 있어서 그런가?!

아니면 빌드할때, 타입이 Byte으로 바뀌어서 그런가?

시간이 없으니 다음에 찾아보기로 하고, 일단 일이 쌓였으니,,, 일하러...

 

끄읏,

 

한줄요약,

공용 언어런타임의 지원 설정에 따라,
무부호타입의 값 처리 빌드과정중 다르게 바뀌는건가...??
반응형