rydy 发表于 2018-10-10 17:56:49

c++与c混合编译问题讨论

开发环境:Visual Studio 2015 + VisualGDB (编译器为arm-eabi GCC 7.2.0)+ STM32CubeMX
      c与c++混合编程情况下,*.c文件会使用arm-xxx-gcc编译器进行编译,*.cpp文件会使用arm-xxx-g++编译器进行编译,STM32CubeMX生成文件都是*.c源文件,在不修改文件名后缀情况下,我现在是想在*.c源文件中使用c++特性(比如重载),应该怎么处理。

Dandjinh 发表于 2018-10-11 09:31:44

我也没找到方法,目前我是在cpp中暴露个全局函数cppmain(),在c中的main中跳转到cppmain,然后由cpp接管整个程序。

rydy 发表于 2018-10-11 12:02:01

Dandjinh 发表于 2018-10-11 09:31
我也没找到方法,目前我是在cpp中暴露个全局函数cppmain(),在c中的main中跳转到cppmain,然后由cpp接管整 ...

你也在用TM32CubeMX吗,我现在想法是TM32CubeMX生成的*.c源码直接使用,关于硬件的配置使用TM32CubeMX生成(不再手动编写),自定义逻辑功能使用C++开发,将stm32 板级配置与自定义逻辑处理分开。但是TM32CubeMX中使用FreeRTOS自动生成代码(*.c)中需要调用自定义逻辑功能C++代码(具有C++特性,extern "C"不适应)。如果将TM32CubeMX中使用FreeRTOS自动生成代码(*.c)改为*.cpp可以解决,但是TM32CubeMX重新生成后需要手动修改,如果能直接指定TM32CubeMX中使用FreeRTOS自动生成代码(*.c)使用arm-xxx-g++编译器进行编译就好了。
页: [1]
查看完整版本: c++与c混合编译问题讨论