主题中讨论的其他部件:MSP432WARE
工具/软件:TI C/C++编译器
‘dMSP432的'riverlib'中包含的文件是否兼容编译为C++源代码?
我之所以提出这个问题,是因为我想移植 一个来自在C++中实施的C2000项目的I2C驱动程序。
类独立地按预期进行编译。 但是,不能在没有明显错误的情况下将C++头文件包含到任何C源文件中。
我希望这方面的解决方案是–cppp_default或–fg编译器选项,通过在MSP432编译器->高级选项->语言选项对话框中选中'将C文件视为C++文件'来选择这些选项。 然后,我似乎可以使用典型的#ifdef __cplusplus extern“C”构造来包装需要作为C处理的代码,同时允许轻松集成C++源代码。
我在项目中发现,当选择上述编译器选项时,某些driverlib文件导致编译错误。
作为健全性检查,我在启用–cpp_default选项的情况下编译了MSP432P401开箱即用演示,并看到类似的错误。
我在Simplelink或MSP432Ware捆绑包中看不到任何涉及此主题的代码示例,因为所有代码都是用C语言编写的,而且我在TI论坛中看到了同样的问题,但没有明确的解决方案。
用于混合C和C++的正确编译器设置是什么,它们不需要我修改引发错误的TI代码?
另一位工程师建议:
如果所有C代码都使用“extern“C”{}”进行保护,则可以混合C/C++
鉴于上述情况,可以轻松调用C++文件中的C函数(因为避免了名称转换)
但是,从C调用C++方法是一个比较棘手的建议。 如果将方法定义为“静态”,并为其创建C友好指针,则会更容易。