Keil STM32 C++混合编程要点
2015-12-30 10:32
861 查看
Keil STM32 C++混合编程要点
1. 文件名必须是.CPP和.h2. .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++混合编程啦
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 如何组织构建多文件 C 语言程序(二)
- 关于指针的一些事情
- 如何写好 C main 函数
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua和C语言的交互详解
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C++变位词问题分析