Tôi luôn sử dụng typedef trong lập trình nhúng để tránh những sai lầm phổ biến:typedefs thông minh
int8_t
-8 bit đã ký số nguyên
int16_t
- 16 bit đã ký số nguyên
int32_t
-32 bit đã ký số nguyên
uint8_t
- 8 bit số không dấu
uint16_t
- Số nguyên không dấu 16 bit
uint32_t
- Số nguyên không dấu 32 bit
Phương pháp nhúng gần đây (vấn đề 177, chưa có trên trang web) giới thiệu cho tôi ý tưởng hữu ích khi có một số typedef cụ thể về hiệu suất. This standard đề xuất có typedefs cho biết bạn muốn loại nhanh nhất có kích thước tối thiểu.
Ví dụ, người ta có thể khai báo một biến sử dụng int_fast16_t
, nhưng nó thực sự sẽ được thực hiện như một int32_t
trên một bộ xử lý 32 bit, hoặc int64_t
trên một bộ xử lý 64 bit như những người sẽ là loại nhanh nhất trong ít nhất 16 bit trên những nền tảng đó. Trên bộ xử lý 8 bit, nó sẽ là các bit int16_t
để đáp ứng yêu cầu kích thước tối thiểu.
Có bao giờ thấy việc sử dụng này trước khi tôi muốn biết
- Bạn đã thấy điều này trong bất kỳ dự án, nhúng hoặc?
- Bất kỳ lý do nào có thể để tránh loại tối ưu hóa này trong typedefs?
+1 cho sự cố loại trả về chức năng. Trình biên dịch sẽ phàn nàn về các loại khác nhau nếu chúng có kích thước nội bộ khác nhau một khi đã được giải quyết, nhưng nó vẫn thích hợp. Tôi sử dụng 8 bit CPU tất cả thời gian trong công việc nhúng mặc dù, và các vấn đề typedef là cơn ác mộng (các nhà phát triển ứng dụng giả sử int là 32 bit) –
Vâng, chắc chắn sử dụng một cái gì đó như int32_t nếu bạn cần một datatype đó là 32 bit rộng. Giả định về loại int chung là xấu xấu xấu. :) Tôi chỉ nói rằng việc chia các typedefs thành int32 và int32fast có vẻ như nó sẽ thêm ít hơn sự nhầm lẫn bổ sung. – jalf