사내 HP-UX 서버에서 컴파일을 하다, 아래의 Warning 이 나왔다.

Warning (suggestion) 887: “SharedMemory.cpp”, line 711 # Type ‘int’ is smaller than type ‘unsigned long’, unwanted widening in value may result.        memset(szTotalHexData, 0x00, (iSize * 3) + 1);                                      ^^^^^^^^^^^^^^  

이유인즉, unsigned long type 이 와야 하는데, int type 이 왔다는 것.

이상할 것이 없어서 memset man 페이지를 확인해 보았다.

      void *memset(void *s, int c, size_t n);

결론은, 저 size_t 의 type. 그냥 int 형 타입인 줄 알았는데, 그게 아니었다. unsigned long type 이었다.

혹시나 HP-UX aCC 에서만 적용되는건 아닌가 싶어서 g++ 에서도 찾아보았다.

확인 결과, 둘 다 unsigned long type 이 맞았다.

g++-4.7.3

#ifndef __SIZE_TYPE__
#define __SIZE_TYPE__ long unsigned int
#endif
#if !(defined (__GNUG__) && defined (size_t))
typedef __SIZE_TYPE__ size_t;

aCC: HP ANSI C++ B3910B A.03.37

#include <sys/stdsyms.h>

#ifndef _SIZE_T_INCLUDED
#       define _SIZE_T_INCLUDED

#       ifndef _SIZE_T
#               define _SIZE_T
_NAMESPACE_STD_START
                        typedef unsigned long size_t;
_NAMESPACE_STD_END
#       endif /** _SIZE_T **/

#endif /** _SIZE_T_INCLUDED **/

 

 

 

 

Tags: , ,

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.