This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP432P401R:MSP432混合C / C++

Guru**** 2535750 points
Other Parts Discussed in Thread: MSP432WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/581524/compiler-msp432p401r-msp432-mixing-c-c

部件号:MSP432P401R
主题中讨论的其他部件: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友好指针,则会更容易。

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Blake,

    我正在研究这个问题。

    此致,

    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢David,

    我意识到这是一个困难的,有点开放的问题:)

    此致

    Blake