한 걸음씩..

warning C4018 <XXXXXXX> signed 또는 unsigned가 일치하지 않습니다. 본문

프로그래밍

warning C4018 <XXXXXXX> signed 또는 unsigned가 일치하지 않습니다.

반엘 2013. 7. 15. 11:00
이유는 프로젝트 설정을 x64이식성 검사를 켜놓아서 뜨는 경고 메시지 이다.

(프로젝트 속성 -> C/C++ -> 64비트 이식성 문제점 검색 -> '아니요') 

64비트로 가면 자료형들이 64비트 시스템에 맞추어 크기가 늘어나는데 예를 들어 

char Tmp[4] = {"TEST"};
for(int k = 0 ; k <= strlen(tmp) ; k++ ) 
printf("%c" , Tmp[k]);
}


이렇게하면 strlen 에서 리턴되는 자료형이 Signed int 으로 리턴이 된다고 한다. 

찾아본 글들을 보아선 저렇게 해놓는다면 64비트 시스템에 가도 Signed int 리턴이 

된다고 하는 것같다. 그래서 위에 64비트 이식성 문제점 검색 옵션을 끄는 방법말고 

char Tmp[4] = {"TEST"}; 
int strSize = 0; 
strSize = strlen(Tmp);
for(int k = 0 ; k <= strSize ; k++ ) 
printf("%c" , Tmp[k]);
}

위와 같이 새로 int 형 변수를 선언하고 그곳에 값을 넣어 놓으면 된다.

그러면 그 시스템에 맞는 크기로 채워지게 된다.