Tôi nhớ đọc ở đâu đó rằng Qt đảm bảo kích thước của một số loại dữ liệu trên nền tảng được hỗ trợ. Có phải là int
sẽ là ít nhất 32 bit ở mọi nơi và qint32
sẽ là chính xác 32 bit ở khắp mọi nơi? Hay cái gì khác?Có đảm bảo là 32 bit trên mỗi nền tảng được hỗ trợ bởi Qt hay chỉ qint32?
C++ đảm bảo rằng int
sẽ có ít nhất 16 bit và một số cấu trúc Qt như QRect
và QPoint
sử dụng int
nội bộ. Tôi đang phát triển một ứng dụng trong đó 32 bit là cần thiết với các loại đó và tôi không muốn phải sao chép chức năng của chúng để tôi có thể sử dụng loại lớn hơn.
Ok, nhưng, 'QtGlobal' định nghĩa một số typedef. Ví dụ, tài liệu cho qint32 nói "Typedef cho int đã ký. Kiểu này được đảm bảo là 32 bit trên tất cả các nền tảng được hỗ trợ bởi Qt." Vì vậy, điều này có nghĩa rằng 'int' cũng phải được đảm bảo là 32 bit trên tất cả các nền tảng được hỗ trợ? –
Tôi sẽ không lấy được kết luận đó. Tài liệu đảm bảo rằng qint32 sẽ có kích thước 32 bit trên tất cả các nền tảng được hỗ trợ, chứ không phải theo cách khác. Nếu họ phải hỗ trợ nền tảng trong tương lai mà int không phải là 32 bit, họ sẽ thay đổi typedef cho nền tảng đó để phản ánh điều đó. Khi được triển khai ngay bây giờ, bạn có thể giả định tất cả các nền tảng được hỗ trợ bởi Qt có int 32 bit. Nhưng giả định là một điều RẤT EVIL. –
Mục đích của qint32 và bạn bè là cung cấp loại có chữ ký và kích thước được đảm bảo. Nếu các loại tiêu chuẩn sẽ cung cấp điều đó, người ta sẽ không cần những typedefs Qt;) Tôi đoán tài liệu Qt là mơ hồ được diễn tả ở đây. –