wangchuanqiushu 发表于 2021-8-22 17:52

发现AT32官方库BUG 8月22日

官方库在支持c++时部分文件缺失
#ifdef __cplusplus
}
#endif

在at32f4xx_syscfg.h文件中上句放在了#endif /*__AT32F4XX_SYSCFG_H */前边,此时工程使用的AT32F415并未定义AT32F421xx,故编译器将#ifdef __cplusplus也给屏蔽了,导致缺失#ifdef __cplusplus,c++编译报错。

修改建议将#ifdef __cplusplus放到第171行后边

musich 发表于 2021-8-23 05:41

厉害

muyichuan2012 发表于 2021-8-23 08:54

感谢楼主反馈,该问题已经在2021年3月18日的V1.3.0版本修改。
请使用最新版本的bsp,谢谢。

xbwpc 发表于 2021-8-23 19:36

muyichuan2012 发表于 2021-8-23 08:54
感谢楼主反馈,该问题已经在2021年3月18日的V1.3.0版本修改。
请使用最新版本的bsp,谢谢。 ...

说到对C++的支持,雅特力所有型号的GCC startup.s里面都没有在跳转main之前调用__libc_init_array,会导致C++静态变量没有被正确初始化。

muyichuan2012 发表于 2021-8-23 19:48

感谢反馈,另外请问st的库有做这部分操作没?

xbwpc 发表于 2021-8-23 20:13

muyichuan2012 发表于 2021-8-23 19:48
感谢反馈,另外请问st的库有做这部分操作没?

有,ST的是这么写的:
/* Call static constructors */
bl __libc_init_array
/* Call the application s entry point.*/
bl main

muyichuan2012 发表于 2021-8-23 20:25

收到

onlycook 发表于 2021-9-1 09:23

哈哈,说到底是楼主没用最新版本的bsp
页: [1]
查看完整版本: 发现AT32官方库BUG 8月22日