[color=var(--md-box-body-color,var(--md-box-global-text-color))]我通过链接文件夹(“源位置”->“链接文件夹...”)添加了一个库,我的大部分代码都在这个库中,想在多个项目中重复使用这些代码。
[color=var(--md-box-body-color,var(--md-box-global-text-color))]但我经常发现,代码生成器(ioc)生成的类型不被我的库 “识别”。
[color=var(--md-box-body-color,var(--md-box-global-text-color))]这个库没有被编译,而是包含许多 C 文件和头文件。
[color=var(--md-box-body-color,var(--md-box-global-text-color))]举个明确的例子:
[color=var(--md-box-body-color,var(--md-box-global-text-color))]一些主项目使用 DAC,当我在 ioc 中激活 DAC 时,会得到 DAC_HandleTypeDef 类型,可在主项目中使用。
[color=var(--md-box-body-color,var(--md-box-global-text-color))]在我的库中,我添加了代码,以便在 DAC_HandleTypeDef 存在时创建一个成员,如下所示:
[color=var(--md-box-body-color,var(--md-box-global-text-color))]#ifdef DAC_HandleTypeDef
DAC_HandleTypeDef *pDAC_Speed;
#endif
[color=var(--md-box-body-color,var(--md-box-global-text-color))]这不起作用,库代码认为 DAC_HandleTypeDef 未定义,而我在主项目中却可以使用 DAC_HandleTypeDef 类型。
[color=var(--md-box-body-color,var(--md-box-global-text-color))]我检查了头文件的包含顺序,发现 DAC_HandleTypeDef 是通过 “stm32g4xx_hal.h” 定义的,该头文件是主项目中包含的第一个头文件。而我的库头文件应该是在之后编译的。
[color=var(--md-box-body-color,var(--md-box-global-text-color))]这是怎么回事呢?
|
|