commit 2025-09-04 00:16 edit a bit ZCppMain/ZMainHead.H
This commit is contained in:
@ -5490,6 +5490,34 @@ namespace ZNsCPP */
|
||||
|
||||
-- 2013-06-23 19:34:00
|
||||
|
||||
■ 'char 의 int 확장에 따른 문제의 코드'
|
||||
|
||||
아래 함수에서
|
||||
|
||||
int ZtCMainChars<>::Minus(TypeCharC*, TypeCharC*, TypeLength, TypeLength)
|
||||
|
||||
return 문을
|
||||
|
||||
return VC_Minus; // VC_Minus 는 *(VP_Left-1)-*(VP_Right-1)
|
||||
|
||||
에서
|
||||
|
||||
return int(*(VP_Left-1))-int(*(VP_Right-1));
|
||||
|
||||
로 고쳤다. 컴파일러에 따라, 음수 char 을 int 로 확장하면 양수(+)가 될 수 있는 것이다. 이
|
||||
것을 언제 알았냐면, LG CNS 에서 충전기 프로젝트를 할 때다. 그때 ELDK 4.0 tool chain 의
|
||||
컴파일러를 사용했는데, NsUtility::CLoadSimUrlConfig_T<> 으로 설정 파일을 읽어들일 때, 자
|
||||
꾸 몇몇 설정값을 인식하지 못하고 있었다. CLoadSimUrlConfig_T<> 은 ns1.cppschool.com 과
|
||||
ns2.cppschool.com 에서 테스트된 클래스이다. 그런데도 이런 문제가 발생한 것이다. 이전에
|
||||
Hemose 의 메신저 서버를 만들 때에도 이런 문제가 있었는데, 풀리지 않을 것 같은 문제로 여
|
||||
기고 매우 긴장하고 있었다. CObjAVL.H 파일의 AddKey() 함수의 비교하는 부분에 cout 으로
|
||||
출력해 보니까, 항상 '>' 조건이 아닌가. 그래서 ZtCMainChars<>::Minus() 함수까지 파들어가
|
||||
리턴하는 값을 보니까 항상 양수였다! 이럴수가, 왼쪽이 작으면 음수를 리턴해야 한다. 그런
|
||||
데 항상 양수라니. 좀 더 조사해 보니까, 해당 컴파일러의, char 의 int 형 확장에 따른 문제
|
||||
였고 코드를 위처럼 고치게 되었다.
|
||||
|
||||
-- 2011-12-29 17:35:00
|
||||
|
||||
■ g++ 에서 아래가 컴파일이 안 된다.
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user