- typedef union {
- unsigned char _TIM5IN1_CAPTURE_;
- unsigned char Capture_result : 1;
- unsigned char High_level_acquisition : 1;
- unsigned char Counter : 6;
- } TIM5IN1_CAPTURE;
在 main.c 中 include 该头文件,然后定义该类型的变量:
- TIM5IN1_CAPTURE TIM5IN1_CAPTURE_STA;
编译器会在 main.o 中分配 TIM5IN1_CAPTURE_STA 变量。在 time_input.c 中 include 该头文件,然后声明该类型的变量:
- extern TIM5IN1_CAPTURE TIM5IN1_CAPTURE_STA;
编译器不会在 time_input.o 中分配 TIM5IN1_CAPTURE_STA 变量,但可能会(也可能不会,这取决于编译器和工具链)标记 TIM5IN1_CAPTURE_STA 是一个外部符号。
当链接时,链接器只会发现一个 TIM5IN1_CAPTURE_STA 实例(在 main.o 中的变量),而对于 time_input.o 中的使用的 TIM5IN1_CAPTURE_STA 外部符号,则会自动定位到 main.o 中的 TIM5IN1_CAPTURE_STA 变量。