C项目 - 两个库对不同类型使用相同的typedef标识符

VC-*_*C-C 5 c typedef

我正在使用MODBUS2 lib开发项目,我想将FatFs lib添加到它以与SD卡连接.这两个库使用标识符SHORTshortint分别与编译器会引发此错误:

#258 invalid redeclaration of type name "SHORT" 
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

das*_*ght 7

您需要重新构建项目,使您的库的翻译单元不必包含来自两个库的标题(翻译单元是C文件的奇特名称).

一种方法是围绕MODBUS2和FatFs功能编写自己的瘦"包装"函数.每个包装器必须包含它包装的库的头文件,因此不会发生编译时冲突.然后你的库的主模块将编程到你的"包装器",根本不包括MODBUS2或FatFs头.