2008-11-06 26 views
10

Trên trình biên dịch MSVC++, người ta có thể sử dụng __int8, __int16, và các loại tương tự cho số nguyên với kích thước cụ thể. Điều này cực kỳ hữu ích cho các ứng dụng cần làm việc với các cấu trúc dữ liệu cấp thấp như các định dạng tệp tùy chỉnh, cấu trúc dữ liệu điều khiển phần cứng và tương tự.Có số nguyên kích thước cố định trong GCC không?

Có tương đương tương tự tôi có thể sử dụng trên trình biên dịch GCC không?

Trả lời

27

tiêu chuẩn ISO C, bắt đầu với các tiêu chuẩn C99, thêm tiêu đề chuẩn <stdint.h> định nghĩa sau đây:

uint8_t - unsigned 8 bit 
int8_t - signed 8 bit 
uint16_t - unsigned 16 bit 
int16_t - signed 16 bit 
uint32_t - unsigned 32 bit 
int32_t - signed 32 bit 
uint64_t - unsigned 64 bit 
int64_t - signed 64 bit 

tôi sử dụng các loại tất cả các thời gian.

Các loại này chỉ được xác định nếu việc triển khai hỗ trợ các loại được xác định trước với các kích thước và đặc điểm thích hợp (hầu hết là do).

<stdint.h> cũng định nghĩa các loại với tên của (loại có ít nhất chiều rộng quy định) hình thức (u)int_leastN_t(u)int_fastN_t (các loại "nhanh nhất" có ít nhất chiều rộng quy định); các loại này là bắt buộc.

Nếu bạn đang sử dụng triển khai cũ không hỗ trợ <stdint.h>, bạn có thể tự cuộn; một triển khai là Doug Gwyn's "q8".

+3

stdint.h cũng là một phần của C99, vì vậy nó không còn là đặc trưng của posix. – puetzk

+0

Tôi hiểu. Tôi nhớ một cách mơ hồ khi thấy một thuộc tính trình biên dịch thực hiện điều gì đó tương tự .... – Pramod

+0

Ồ, đó là điều tốt để biết, cảm ơn puetzk :) –

Các vấn đề liên quan