표준 데이터 유형
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);
16진 출력이 필요한 경우, 상단 및 하단 4바이트를 각각 인쇄해야 합니다.printf("My struc pointer: %x", pMyStruc);
- 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와 동일합니다.