Keil STM32 C++混合编程要点

Keil STM32 C++混合编程要点

1. 文件名必须是.CPP和.h
2. .h文件中要增加如下代码:

#ifndef __LEDTASK_H
#define __LEDTASK_H

#ifdef  __cplusplus
extern "C" {
#endif

#include "stm32_led.h"
void led1_task   (void *pdata);

#ifdef  __cplusplus
}  
#endif

#endif

3. 调用.cpp文件中资源时(如类,函数等),那个文件也必须是.cpp文件。即.cpp文件里才能调用C++语法的程序
4. –C99要去掉
这里写图片描述

其实到最后,我是放弃了这种C++混合编程的,一开始非常想这样做,这样我的那部分C++代码就可以无缝移植到MFC上了,后来Keil也编译通过了,但是由于上述条件的束缚(第一条OK,第二条也OK,第3条有束缚,即别人想嵌入我的代码,必须也要是cpp文件,别人改完相应后缀名-.cpp后,该文件对应的头文件还有很繁琐的增加第二条所述的代码;第四条也有束缚,–C99有一个特性是,可以在代码中定义变量,而无需在函数开头定义,且可以初始化结构体,如下面的代码片:

while(1) {
    int key_value = Read_key();
}
DeviceInfo_TypeDef tDeviceInfoMem = {
    .mac_addr       = {0x84, 0x39, 0xBE, 0x90, 0x00, 0x00},
    .ip_addr        = {10, 10, 2, 1}, 
    .netmask        = {255, 255, 252, 0x00},            
    .gateway        = {10, 10, 3, 254},               
    .projBaud       = 19200, 
};

当然也可以这样(无需–C99支持):

DeviceInfo_TypeDef tDeviceInfoMem = {
    {0x84, 0x39, 0xBE, 0x90, 0x00, 0x00},
    {10, 10, 2, 1},                      
    {255, 255, 252, 0x00},               
    {10, 10, 3, 254},                    
    19200, 
};

考虑到以上修改的代码量程度,决定先不用C++混合编程啦

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值