github0null / eide

An embedded development environment for mcs51/stm8/avr/cortex-m/riscv on VsCode.

Home Page:https://em-ide.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[bug] gcc默认模板中的`--specs=nano.specs`应该同时也被设置为c/c++编译器标志

yyjdelete opened this issue · comments

在c/c++编译器标志中指定--specs=nano.specs时会导致引用路径中arm-none-eabi\include\newlib.h被替换为arm-none-eabi\include\newlib-nano\newlib.h, 从而导致部分结构体定义发生改变
例如下面这段代码, 在nano.specs下返回76, 未指定时返回288(依具体的gcc版本而定)

编译FreeRTOS中如果将配置中的configUSE_NEWLIB_REENTRANT改为1就会遇到这个问题
由于程序编译时采用的定义和连接到的C库中的实际实现不一致, 从而引起连接错误或者执行时随机出错(依具体的gcc版本而定)

#include <reent.h>

    printf("sizeof(struct _reent): %d\n", sizeof(struct _reent));
commented

好的,后面会对这些默认参数进行修补