哪个 C 标准引入了“__weak”关键字?

Which C-standard introduced the "__weak" keyword?

我想在我正在创建的库中使用 __weak,但我想确保它符合已知的“C 编号”标准。这是哪个标准介绍的?还是大多数编译器都支持的非标准编译器扩展? (通过关键字或 __attribute__。)

编辑:可能不应该使用术语“关键字”,最感兴趣的是某种形式的“弱”是否是标准?

__weak 不是 C 标准的一部分。

__weak 是特定于编译器的编译器扩展,例如在 Keil 和 COSMIC 编译器上可用。 __attribute__ 是 gcc GNU C 编译器的编译器扩展,可用于 clang、TASKING 编译器、TI Arm 编译器等。例如,__weak 在 gcc 上无效。

您可以浏览 STM32CubeF4/cmsis_compiler.h 一些 编译器的 STM32Cube 项目的一些 compiler-specific 宏定义。

很常见,因为ELF format的流行,它支持弱符号。