Tôi đang làm việc với mã C được nhúng kế thừa xác định các loại uint8_t, uint16_t
và uint32_t
trong tệp tiêu đề bằng cách sử dụng từ khóa typedef
.Thời gian kiểm tra biên dịch tồn tại của stdint.h
Để thảo luận, hãy cho chúng tôi biết tệp typedefs.h
chứa các định nghĩa này.
Trong mô-đun nguồn C mới của tôi, tôi bao gồm stdint.h
. Tôi cũng bao gồm các tệp tiêu đề khác bao gồm typedefs.h
ở đâu đó trong cấu trúc phân cấp. Như dự kiến, trình biên dịch phàn nàn về nhiều biểu tượng được xác định.
Tôi muốn sửa đổi tệp cũ typedefs.h
để nó chỉ khai báo các loại uint*_t
nếu stdint.h
không được bao gồm hoặc tốt hơn nếu loại uint*_t
không được xác định.
Hiểu biết của tôi là không thể sử dụng #ifndef
vì typedef
không phải là chỉ thị tiền xử lý.
Vậy làm cách nào để yêu cầu trình biên dịch không xác định uint*_t
nếu chúng đã tồn tại (hoặc nếu đã bao gồm stdint.h
)?
Lưu ý: điều này sẽ dễ dàng nếu tiêu chuẩn được xác định theo tiêu chuẩn C bao gồm định nghĩa bảo vệ cho tệp tiêu đề.
FWIW, tôi đang sử dụng trình biên dịch Green Hills, 4,24, cho bộ xử lý ARM9.
Hm, 'UINT32_MIN' không tồn tại. 'UINT32_MAX' hoặc' INT32_MIN' –
+1 cho ý tưởng thông minh. –
@Jens: Hai điều sau đây dường như gợi ý rằng các định nghĩa như vậy được yêu cầu 1) http://www.opengroup.org/onlinepubs/000095399/basedefs/stdint.h.html 2) http://linux-documentation.com/ vi/man/man0p/stdint.h.html – torak