keil MDK用CPP开发STM32

MDK4.72+STM323.5固件库建立main.cpp后,直接调用固件库的SystemInit竟然编译通过了,而宏定义了__cplusplus后反而报错:C:\Kei... MDK4.72 + STM32 3.5固件库
建立main.cpp后,直接调用固件库的SystemInit竟然编译通过了,而宏定义了__cplusplus后反而报错:
C:\Keil\ARM\ARMCC\bin\..\include\stdint.h(20): error: #20: identifier "namespace" is undefined
C:\Keil\ARM\ARMCC\bin\..\include\stdint.h(20): error: #65: expected a ";"
C:\Keil\ARM\ARMCC\bin\..\include\stdint.h(224): error: #169: expected a declaration
C:\Keil\ARM\ARMCC\bin\..\include\stdint.h(232): error: #65: expected a ";"
C:\Keil\ARM\ARMCC\bin\..\include\stdint.h(233): error: #65: expected a ";"
C:\Keil\ARM\ARMCC\bin\..\include\stdint.h(234): error: #65: expected a ";"
C:\Keil\ARM\ARMCC\bin\..\include\stdint.h(235): error: #65: expected a ";"
……
……
main.cpp如下:
#include "common.h"
int main()

{
testClass stm32;
stm32.GPIO();
SystemInit();
return 0;
}
求指点迷津,谢谢
展开
 我来答
淇淇要加油
2014-12-08 · TA获得超过138个赞
知道小有建树答主
回答量:74
采纳率:0%
帮助的人:63.8万
展开全部
testClass 你定义了没有,定义后main中有声明没有
更多追问追答
追问
在init.h和init.cpp中做了声明和定义。
基本语法应该是没问题的,只要不宏定义'__cplusplus'编译就是正常的,没有警告,没有错误,这错误是对"__cplusplus"做了宏定义后出现的。
追答
__cplusplus一般用于将C++代码以标准C形式输出(即以C的形式被调用),这是因为C++虽然常被认为是C的超集,但是C++的编译器还是与C的编译器不同的。C中调用C++中的代码这样定义会是安全的。
一般的考虑跨平台使用方法如下:
#ifdefined(__cplusplus)||defined(c_plusplus) //跨平台定义方法
extern "C"{
#endif
//... 正常的声明段
#ifdefined(__cplusplus)||defined(c_plusplus)
}
#endif

简单的用在windows下可以如下定义:
#ifdef __cplusplus
extern "C"{
//... 正常的声明段
}
#endif
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
查晓筠0i5
2014-12-07 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4975万
展开全部
需要帮你做设计吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式