C,跳过初始化静态数组

use*_*900 6 c gcc

有没有办法指示gcc跳过某些静态,易变的变量的初始化?我有几个循环缓冲区(声明为volatile),在启动时和我的MCU上真的不需要归零,浪费大约2500左右.

提前致谢,

oua*_*uah 6

如果使用gcc,可以将数组对象放在以下.noinit部分中:

uint8_t arr[1024] __attribute__ ((section (".noinit")));
Run Code Online (Sandbox Code Playgroud)

  • @icepack - 可能是的 - 这就是它是一个扩展的原因。 (2认同)
  • @SomeWittyUsername:不,这与 C 标准并不矛盾。C 标准规定 C 实现可以具有扩展,并且不改变“严格符合”程序(不使用扩展)的行为的扩展是“符合”的。GCC 的 `__attribute__` 关键字是一个保留标识符(因为它以 `__` 开头),因此没有严格一致的程序使用它(根据定义,任何使用它的程序都不是严格一致的),因此接受它是一个一致的扩展。 (2认同)