표준 데이터 유형

32비트 UNIX, 64비트 UNIX, 64비트 Windows 애플리케이션에 대한 표준 데이터에 대해 학습하십시오.

32비트 UNIX 애플리케이션

이 섹션은 비교를 위해 포함되고 Solaris를 기반으로 합니다. 기타 UNIX 플랫폼과의 차이점이 언급됩니다.
이름 길이
char 1바이트
short 2바이트
int 4바이트
long 4바이트
float 4바이트
double 8바이트
long double 16바이트

AIX® 및 Linux PPC에서 long double이 8바이트라는 것을 참고하십시오.

pointer 4바이트
ptrdiff_t 4바이트
size_t 4바이트
time_t 4바이트
clock_t 4바이트
wchar_t 4바이트

AIX에서 wchar_t가 2바이트라는 것을 참고하십시오.

64비트 UNIX 애플리케이션

이 섹션은 Solaris를 기반으로 합니다. 기타 UNIX 플랫폼과의 차이점이 언급됩니다.
이름 길이
char 1바이트
short 2바이트
int 4바이트
long 8바이트
float 4바이트
double 8바이트
long double 16바이트

AIX 및 Linux PPC에서 long double이 8바이트라는 것을 참고하십시오.

pointer 8바이트
ptrdiff_t 8바이트
size_t 8바이트
time_t 8바이트
clock_t 8바이트

기타 UNIX 플랫폼에서 clock_t는 4바이트라는 것을 참고하십시오.

wchar_t 4바이트

AIX에서 wchar_t가 2바이트라는 것을 참고하십시오.

Windows 64비트 애플리케이션

이름 길이
char 1바이트
short 2바이트
int 4바이트
long 4바이트
float 4바이트
double 8바이트
long double 8바이트
pointer 8바이트

모든 포인트는 8바이트입니다.

ptrdiff_t 8바이트
size_t 8바이트
time_t 8바이트
clock_t 4바이트
wchar_t 2바이트
WORD 2바이트
DWORD 4바이트
HANDLE 8바이트
HFILE 4바이트

Windows의 코딩 고려사항

HANDLE hf;
다음을 사용하십시오.
hf = CreateFile((LPCTSTR) FileName,
                Access,
                ShareMode,
                xihSecAttsNTRestrict,
                Create,
                AttrAndFlags,
                NULL);
다음을 사용하지 마십시오.
HFILE hf;
hf = (HFILE) CreateFile((LPCTSTR) FileName,
                        Access,
                        ShareMode,
                        xihSecAttsNTRestrict,
                        Create,
                        AttrAndFlags,
                        NULL);
오류가 발생합니다.
size_t len fgets
다음을 사용하십시오.
size_t len
while (fgets(string1, (int) len, fp) != NULL)
len = strlen(buffer);
다음을 사용하지 마십시오.
int len;

while (fgets(string1, len, fp) != NULL)
len = strlen(buffer); 
printf
다음을 사용하십시오.
printf("My struc pointer: %p", pMyStruc); 
다음을 사용하지 마십시오.
printf("My struc pointer: %x", pMyStruc);
16진 출력이 필요한 경우, 상단 및 하단 4바이트를 각각 인쇄해야 합니다.
char *ptr
다음을 사용하십시오.
char * ptr1;
char * ptr2;
size_t bufLen;

bufLen = ptr2 - ptr1;
다음을 사용하지 마십시오.
char *ptr1;
char *ptr2;
UINT32 bufLen;

bufLen = ptr2 - ptr1;
alignBytes
다음을 사용하십시오.
alignBytes = (unsigned short) ((size_t) address % 16); 
다음을 사용하지 마십시오.
void *address;
unsigned short alignBytes;

alignBytes = (unsigned short) ((UINT32) address % 16);
len
다음을 사용하십시오.
len = (UINT32) ((char *) address2 - (char *) address1);
다음을 사용하지 마십시오.
void *address1;
void *address2;
UINT32 len;

len = (UINT32) ((char *) address2 - (char *) address1);
sscanf
다음을 사용하십시오.
MQLONG SBCSprt;
            
sscanf(line, "%d", &SBCSprt);
다음을 사용하지 마십시오.
MQLONG SBCSprt;
            
sscanf(line, "%1d", &SBCSprt);

%ld는 8바이트 유형을 4바이트 유형으로 넣으려고 시도합니다. 실제 long 데이터 유형을 다루는 경우 %l만 사용하십시오. MQLONG, UINT32 및 INT32는 4바이트로 정의됩니다. 이는 모든 WebSphere® MQ 플랫폼에서 int와 동일합니다.


참조 참조

피드백

시간소인 아이콘 마지막 갱신 날짜: 2018년 11월 1일 목요일
http://www.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.ref.dev.doc/com.ibm.mq.ref.dev.doc/q104610_.htm fg19390_