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++混合编程啦
上一篇:STM32 之六 USB IP(USB模块)、官方驱动版本 详解
下一篇:用VisualStudio开发STM32遇到的问题(一)
推荐阅读最新更新时间:2024-11-12 13:38
设计资源 培训 开发板 精华推荐
- EVAL-AD7654CB,用于 AD7654、16 位、500 Ksps PulSAR 模数转换器的评估板
- MC34163 外部电流升压开关稳压器的典型应用
- LT6301 的典型应用 - 采用 28 引脚 TSSOP 封装的双路 500mA、差分 xDSL 线路驱动器
- 2.5V 输出 ADR391B 微功耗、低噪声精密电压基准的典型应用
- 【广西师大校赛】液体自动加药装置设计
- ESP32烧录架!
- MTUDK2-ST-MDOT,基于 868MHz、915MHz 收发器的 MultiConnect mDot 开发套件
- NCS2001SQ1T2G 0.9V 单电源运算放大器用作方波振荡器的典型应用电路
- 【训练营】写字机器人
- WIFI继电器