使用keil5编译stm32,头文件core_cmFunc.h中,是预定义__CC_ARM,还是__GNUC__?

如题,在core_cmFunc.h文件中,#ifdefined(__CC_ARM)...#elifdefined(__GNUC__)...其中,__disable_irq... 如题,在core_cmFunc.h文件中,
#if defined ( __CC_ARM )
...
#elif defined ( __GNUC__ )
...
其中,__disable_irq();是定义在( __GNUC__ )下的,为什么用keil编译时,调用不会出现问题?
展开
 我来答
吨半
2016-08-24 · TA获得超过360个赞
知道小有建树答主
回答量:360
采纳率:0%
帮助的人:63.1万
展开全部
编译的时候,可能是那个地方定义了__CC_ARM, 预编译指令执行了#if defined ( __CC_ARM )下面的代码,没有执行#elif defined ( __GNUC__ )下面的代码;

#if ...
...
#elif ..
...
是条件预编译,只执行其中的一个分支
追问
只执行一个分支是对的,问题是keil自带时armcc编译器,但是调用的是gcc下的函数。
追答
#if .. #elif是预编译指令,就是说在正式编译之前进行一遍,把没有用的分支代码忽略了,正式编译时,只编译__CC_ARM分支的代码,其它分支的代码没有参与编译,当然也不会出错
修者世界
2016-08-24 · TA获得超过5851个赞
知道大有可为答主
回答量:5984
采纳率:61%
帮助的人:810万
展开全部
因为这个头文件将他们都包容了进来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式