You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32H562中FILEX与USBX的VOID/void定义冲突问题求助

STM32H562中FileX与USBX的VOID定义冲突解决方案

从STM32F4xx迁移至STM32H562后,使用FileX和USBX替代原有FATFS与USB中间件时,会遇到二者的VOID类型定义冲突:

  • FileX通过#define VOID void定义VOID
  • USBX通过typedef void VOID;定义VOID

这会导致编译器报错,具体错误信息如下:

In file included from ../Middlewares/ST/filex/common/inc/fx_api.h:118,
                 from ../FileX/App/app_filex.h:30,
                 from ../Core/Src/main.c:21:
../Middlewares/ST/filex/ports/generic/inc/fx_port.h:90:49: error: two or more data types in declaration specifiers
   90 | #define VOID                                    void
      |                                                 ^~~~
../Middlewares/ST/usbx/ports/generic/inc/ux_port.h:83:49: note: in expansion of macro 'VOID'
   83 | typedef void                                    VOID;
      |                                                 ^~~~
In file included from ../Middlewares/ST/usbx/common/core/inc/ux_api.h:149,
                 from ../USBX/App/app_usbx_device.h:29,
                 from ../Core/Src/main.c:22:
../Middlewares/ST/usbx/ports/generic/inc/ux_port.h:83:1: warning: useless type name in empty declaration
   83 | typedef void                                    VOID;
      | ^~~~~~~

可行解决方案

方法1:统一修改为#define定义

找到USBX的ux_port.h文件(路径:../Middlewares/ST/usbx/ports/generic/inc/ux_port.h),将第83行的typedef void VOID;替换为:

#define VOID void

与FileX的定义保持一致,消除冲突。

方法2:统一修改为typedef定义

找到FileX的fx_port.h文件(路径:../Middlewares/ST/filex/ports/generic/inc/fx_port.h),将第90行的#define VOID void替换为:

typedef void VOID;

统一使用typedef方式定义VOID类型。

方法3:通过头文件包含顺序控制

若不想修改中间件源码,可在main.c中调整头文件包含顺序并加入宏取消定义:

// 先包含USBX头文件,此时VOID为typedef定义
#include "app_usbx_device.h"
// 取消VOID的typedef定义,再包含FileX头文件
#undef VOID
#include "app_filex.h"

也可以反过来先包含FileX,再#undef VOID后包含USBX,需根据代码中VOID的实际使用场景选择顺序。

方法4:全局宏定义覆盖

在项目编译选项中添加全局宏定义(以STM32CubeIDE为例:Project Settings -> C/C++ Build -> Settings -> GCC Compiler -> Preprocessor):

#define VOID void

该全局宏会优先于中间件中的定义,直接覆盖二者的冲突声明。

内容的提问来源于stack exchange,提问作者JavaLatte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 16:05:01