我正在使用旧的嵌入式 C 代码来定义类型uint8_t, uint16_t
和使用关键字 uint32_t
在头文件中。typedef
为了讨论,假设文件typedefs.h
包含这些定义。
在我的新 C 源代码模块中,我包含stdint.h
. 我还包括其他包含typedefs.h
在层次结构中的头文件。正如预期的那样,编译器抱怨多个定义的符号。
我想修改遗留文件typedefs.h
,以便它只声明uint*_t
类型,如果stdint.h
不包含或者更好,如果uint*_t
没有定义类型。
我的理解是#ifndef
不能使用,因为typedef
它不是预处理器指令。
那么我如何告诉编译器不要定义uint*_t
它们是否已经存在(或者是否stdint.h
已经包含)?
注意:如果 C 规范定义的标准包括头文件的保护定义,这将很容易。
FWIW,我正在为 ARM9 处理器使用 Green Hills 编译器 4.24。