符号__no_init __root C.

alk*_*lkz 5 c variables

大家好,我正在读C源,我找到了这样的符号:

__no_init __root extern volatile unsigned char var[10]    @ 0x4000000;
Run Code Online (Sandbox Code Playgroud)

但是我不知道__no_init __root是什么意思,它是标准C吗?

谢谢.

Mic*_*urr 12

这些是在一些针对嵌入式系统的编译器中使用的C语言扩展(例如,IAR的AVR编译器).

__no_init 这意味着编译器不应该初始化变量,并且当变量放在硬件寄存器位置并且您不希望程序启动时将寄存器设置为0时使用.

__root用于告诉编译器/链接器变量或函数应保留在二进制映像中,即使它实际上没有在程序中使用.这可能对于调试目的以及在开发过程中"调整"程序的大小非常有用.