UNIX、 Linux、および Windows での標準データ・タイプ
32 ビット UNIX および Linux®、64 ビット UNIX および Linux、および 64 ビット Windows アプリケーションでの標準データ型について説明します。
32 ビット UNIX および Linux アプリケーション
このセクションは比較のために組み込まれており、 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 および Linux アプリケーション
このセクションは、 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 バイト 注: pointer はすべて 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 バイトの型に書き込もうとします。%l
は、実際にlong
データ・タイプを取り扱う場合にのみ使用してください。 MQLONG、 UINT32 、および INT32 は、すべての IBM® MQ プラットフォーム上のint
と同じ 4 バイトとして定義されます。