你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

mbed导出keil 5工程,编译错误怎么处理??

[复制链接]
adlu 提问时间:2016-11-22 11:47 /
悬赏20ST金币未解决
本帖最后由 adlu 于 2016-11-22 15:02 编辑

QQ截图20161122114545.jpg

在mbed网页开发环境中导出keil 5的工程,编译通不过,出现30个相同的错误,
mbed/platform/Callback.h(247): error:  #1209: invalid argument to attribute "deprecated"
请问该怎么处理?

收藏 1 评论11 发布时间:2016-11-22 11:47

举报

11个回答
xhzheng 回答时间:2016-11-22 13:17:09
1209行代码是什么??
党国特派员 回答时间:2016-11-22 13:17:17
加上--cpp选项试试。
QQ图片20161122131629.png

如果能把你的项目上传上来更好。
adlu 回答时间:2016-11-22 13:39:17
xhzheng 发表于 2016-11-22 13:17
1209行代码是什么??

不是1209行代码,是#1209 号error
adlu 回答时间:2016-11-22 13:40:28
本帖最后由 adlu 于 2016-11-22 13:49 编辑

QQ截图20161122133826.jpg

加了,还是没有作用。加的位置不对吗? 加在后面也试过了

Misc Controls栏的全部内容是:
--cpp -DDEVICE_RTC=1 -DDEVICE_SLEEP=1 -DTOOLCHAIN_object -DTOOLCHAIN_ARM_STD -D__ASSERT_MSG -DTARGET_STM32F1 --no_rtti -DTARGET_STM32F103RB -DMBED_BUILD_TIMESTAMP=1479540101.93 -Otime -DDEVICE_PORTINOUT=1 -D__CORTEX_M3 -DTARGET_FF_ARDUINO -c -O3 -DDEVICE_CAN=1 -DDEVICE_PORTOUT=1 -DDEVICE_STDIO_MESSAGES=1 -DTARGET_RELEASE --split_sections -DARM_MATH_CM3 -DTARGET_LIKE_CORTEX_M3 -DDEVICE_ANALOGIN=1 -DTARGET_NUCLEO_F103RB -DDEVICE_PORTIN=1 -DTARGET_CORTEX_M --cpu=Cortex-M3 -DTARGET_FF_MORPHO -DDEVICE_I2C=1 --preinclude=mbed_config.h -DTARGET_STM -DTOOLCHAIN_ARM -DDEVICE_INTERRUPTIN=1 --no_depend_system_headers -DTARGET_UVISOR_UNSUPPORTED --md -DDEVICE_PWMOUT=1 -DDEVICE_SERIAL_ASYNCH=1 --gnu --apcs=interwork -DDEVICE_SPI=1 -D__MBED__=1 -DDEVICE_SPISLAVE=1 -DDEVICE_SERIAL=1 -DTARGET_M3 -DDEVICE_I2CSLAVE=1 -D__CMSIS_RTOS -D__MBED_CMSIS_RTOS_CM -DTARGET_LIKE_MBED
高二毛 回答时间:2016-11-22 14:20:55
可能是KEIL对于变量的属性没有定义,你可以将变量的属性暂时去掉,应该就是OK.
adlu 回答时间:2016-11-22 14:51:32
本帖最后由 adlu 于 2016-11-22 14:56 编辑

经过分析,这是编译器不支持该提示信息的问题。
出现的30个错误,内容相同,如下图。
1.jpg
其作用只不过是输出提示信息“Arguments to callback have been reordered to Callback(func, arg)”。
但是keil不支持MBED_DEPRECATED_SINCE宏所使用的提示语法,所以出现该错误。

查看该宏定义,在toolchain.h文件,其功能描述何形式如下图。
2.jpg
该宏又调用了MBED_DEPRECATED宏,继续查看,光标定位到223行。
3.jpg

由此可知,导出的keil 5工程使用的是GNUC编译工具链。
但不知道为什么keil 5不支持该提示信息。


adlu 回答时间:2016-11-22 14:54:41
既然只是提示信息,直接将MBED_DEPRECATED_SINCE宏置空即可。修改如下:
5.jpg

再次编译,0错误,0警告。
6.jpg
党国特派员 回答时间:2016-11-22 17:48:14
如果是gnu 的话,你在c/c++选项里加入 --gnu选项。
xhzheng 回答时间:2016-11-23 08:33:58
哇哦,学习了;
adlu 回答时间:2016-11-23 09:07:18
党国特派员 发表于 2016-11-22 17:48
如果是gnu 的话,你在c/c++选项里加入 --gnu选项。

我加--gnu试了一下,也是不行的。只能按照我前面说的解决。
zbber 回答时间:2016-11-23 10:22:25
可能是KEIL对于变量的属性没有定义,你可以将变量的属性暂时去掉,应该就是OK

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版